Skip to content

Add smoke tests: Pixelfed #684

@sij411

Description

@sij411

Background

Part of the phase 2 interoperability smoke test rollout tracked in #682.

Pixelfed is a media-focused ActivityPub server where posts are centered
around image and video attachments. The key goal beyond the baseline
scenarios is verifying that Image objects federate correctly between
Pixelfed and Fedify.

Docker image requirements

  • Deployable via Docker Compose with no manual steps beyond configuration
  • Exposes an HTTP endpoint reachable by the Caddy TLS proxy within the
    smoke Docker network
  • Supports ActivityPub federation out of the box
  • Allows programmatic account creation and API token issuance without
    requiring email verification
  • Implements the Mastodon-compatible REST API (/api/v1/*)

Test scenarios

The six baseline scenarios in orchestrator.ts (Follow ↔, Create Note,
Reply, Unfollow ↔) should pass without modification since Pixelfed
implements the Mastodon-compatible API.

One additional scenario is required:

  • Pixelfed → Fedify (Create(Image)): publish an image post on
    Pixelfed and verify the harness inbox receives a Create activity
    whose object type is Image

This requires a small extension to the harness: the Create inbox
listener in federation.ts needs to capture the object type, and
store.ts needs an objectType field on ReceivedActivity.

Acceptance criteria

  • test/smoke/pixelfed/ is added with the required files:
    docker-compose.yml, Caddyfile.pixelfed, Caddyfile.fedify-harness,
    generate-certs.sh, provision.sh, and a server config file
  • The provisioning script creates a test user, obtains an API token, and
    resolves the Fedify harness account
  • All six baseline scenarios pass reliably
  • The Create(Image) scenario passes reliably
  • A GitHub Actions workflow (.github/workflows/smoke-pixelfed.yml) is
    added, triggered on pushes to main, next, and *.*-maintenance
    branches, and on workflow_dispatch

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions