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
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
Imageobjects federate correctly betweenPixelfed and Fedify.
Docker image requirements
smokeDocker networkrequiring email verification
/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:
Create(Image)): publish an image post onPixelfed and verify the harness inbox receives a
Createactivitywhose object type is
ImageThis requires a small extension to the harness: the
Createinboxlistener in
federation.tsneeds to capture the object type, andstore.tsneeds anobjectTypefield onReceivedActivity.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 fileresolves the Fedify harness account
Create(Image)scenario passes reliably.github/workflows/smoke-pixelfed.yml) isadded, triggered on pushes to
main,next, and*.*-maintenancebranches, and on
workflow_dispatch