Background
Part of the phase 3 interoperability smoke test rollout tracked in #682 .
Lemmy is a link-aggregator-style ActivityPub server where the primary
federation unit is the community, represented as a Group actor.
Posts are federated as Announce(Create(Note)) — the community wraps
and re-broadcasts content to its followers. Kbin is no longer actively
maintained; Mbin is the preferred
active fork and may be used as an alternative target.
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
- Note: Lemmy does not implement the Mastodon-compatible API.
The provisioning script and any new scenarios must use the Lemmy API
(/api/v3/*) directly
Test scenarios
The six baseline scenarios in orchestrator.ts do not apply here since
Lemmy does not implement the Mastodon-compatible API. The following new
scenarios are required:
- Fedify → Lemmy (
Follow a community): follow a Lemmy community
(Group actor) from the Fedify harness and verify Accept(Follow) is
received
- Lemmy → Fedify (
Announce(Create(Note))): post to a Lemmy
community and verify the harness inbox receives an
Announce(Create(Note)) activity
The harness inbox listener currently records only top-level activity
types. It needs to be extended to unwrap Announce and inspect the
inner object for the second scenario.
Acceptance criteria
test/smoke/lemmy/ is added with the required files:
docker-compose.yml, Caddyfile.lemmy, 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
- Both scenarios above pass reliably
- A GitHub Actions workflow (
.github/workflows/smoke-lemmy.yml) is
added, triggered on pushes to main, next, and *.*-maintenance
branches, and on workflow_dispatch
Background
Part of the phase 3 interoperability smoke test rollout tracked in #682 .
Lemmy is a link-aggregator-style ActivityPub server where the primary
federation unit is the community, represented as a
Groupactor.Posts are federated as
Announce(Create(Note))— the community wrapsand re-broadcasts content to its followers. Kbin is no longer actively
maintained; Mbin is the preferred
active fork and may be used as an alternative target.
Docker image requirements
smokeDocker networkrequiring email verification
The provisioning script and any new scenarios must use the Lemmy API
(
/api/v3/*) directlyTest scenarios
The six baseline scenarios in
orchestrator.tsdo not apply here sinceLemmy does not implement the Mastodon-compatible API. The following new
scenarios are required:
Followa community): follow a Lemmy community(
Groupactor) from the Fedify harness and verifyAccept(Follow)isreceived
Announce(Create(Note))): post to a Lemmycommunity and verify the harness inbox receives an
Announce(Create(Note))activityThe harness inbox listener currently records only top-level activity
types. It needs to be extended to unwrap
Announceand inspect theinner object for the second scenario.
Acceptance criteria
test/smoke/lemmy/is added with the required files:docker-compose.yml,Caddyfile.lemmy,Caddyfile.fedify-harness,generate-certs.sh,provision.sh, and a server config fileresolves the Fedify harness account
.github/workflows/smoke-lemmy.yml) isadded, triggered on pushes to
main,next, and*.*-maintenancebranches, and on
workflow_dispatch