mirror of
https://github.com/ether/etherpad-lite.git
synced 2026-07-18 09:04:54 +00:00
Plugins that intentionally remove a baseline Etherpad feature
(ep_disable_chat, ep_disable_change_author_name, ep_disable_error_messages,
ep_disable_reset_authorship_colours) currently break core tests for the
removed feature. Their main branches are red, their auto-publish gates
never fire, and Dependabot PRs pile up.
The temptation is to give these plugins an "opt-out of these tests"
flag — but that's a self-serving attestation: a plugin can claim "I
just disable chat, ignore those tests" and quietly break unrelated
functionality on the user's install. etherpad.org/plugins would still
show it green.
This commit introduces a small declared-disables contract that closes
that gap:
1. Core specs grow @feature:* Playwright tags. Initial set:
@feature:chat, @feature:username, @feature:clear-authorship,
@feature:error-gritter. Tags are added test-by-test where the
test exercises a single feature, so the contract stays precise.
2. Plugins declare which feature tags they disable in their ep.json:
{ "name": "ep_disable_chat", "disables": ["@feature:chat"], ... }
3. bin/run-frontend-tests-with-disables.sh enforces the contract via
two passes:
- Pass 1 (regression): every test NOT in the disabled list must
pass. Catches plugins that break things they don't claim to.
- Pass 2 (honesty): every test that IS in the disabled list
must FAIL. Catches plugins that lie about disabling features
they don't actually disable, and stops them from grep-inverting
arbitrary unrelated tests.
4. doc/PLUGIN_FEATURE_DISABLES.md walks the design and migration.
The disables list is in ep.json (publicly visible), so etherpad.org/plugins
can surface "this plugin disables: chat" alongside the green CI badge —
users see what they're losing before they install.
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
||
|---|---|---|
| .. | ||
| deb-src | ||
| nsis | ||
| plugins | ||
| buildDebian.sh | ||
| buildForWindows.sh | ||
| checkAllPads.ts | ||
| checkPad.ts | ||
| cleanRun.sh | ||
| commonPlugins.ts | ||
| compactAllPads.ts | ||
| compactPad.ts | ||
| convertSettings.json.template | ||
| createRelease.sh | ||
| createUserSession.ts | ||
| debugRun.sh | ||
| deleteAllGroupSessions.ts | ||
| deletePad.ts | ||
| extractPadData.ts | ||
| fastRun.sh | ||
| functions.sh | ||
| generateReleaseNotes.ts | ||
| importSqlFile.ts | ||
| installDeps.sh | ||
| installer.ps1 | ||
| installer.sh | ||
| installLocalPlugins.sh | ||
| make_docs.ts | ||
| migrateDB.ts | ||
| migrateDirtyDBtoRealDB.ts | ||
| package.json | ||
| plugins.ts | ||
| push-after-release.sh | ||
| rebuildPad.ts | ||
| release.ts | ||
| repairPad.ts | ||
| run-frontend-tests-with-disables.sh | ||
| run.sh | ||
| safeRun.sh | ||
| setup-trusted-publishers.sh | ||
| tsconfig.json | ||
| updatePlugins.sh | ||