Fundamentals
Matrix-kwaliteitsborging
De Matrix-QA-baan voert de gebundelde @openclaw/matrix Plugin uit tegen een wegwerp-Tuwunel-homeserver in Docker, met tijdelijke driver-, SUT- en observer-accounts plus vooraf gevulde rooms. Dit is de live, transport-realistische dekking voor Matrix.
Dit is tooling uitsluitend voor maintainers. Gepubliceerde OpenClaw-releases laten qa-lab bewust weg, dus openclaw qa is alleen beschikbaar vanuit een broncode-checkout. Broncode-checkouts laden de gebundelde runner rechtstreeks - er is geen Plugin-installatiestap nodig.
Voor bredere context over het QA-framework, zie QA-overzicht.
Snelstart
pnpm openclaw qa matrix --profile fast --fail-fast
Gewoon pnpm openclaw qa matrix voert --profile all uit en stopt niet bij de eerste fout. Gebruik --profile fast --fail-fast voor een release-gate; shard de catalogus met --profile transport|media|e2ee-smoke|e2ee-deep|e2ee-cli wanneer je de volledige inventaris parallel uitvoert.
Wat de baan doet
- Richt een wegwerp-Tuwunel-homeserver in Docker in (standaardimage
ghcr.io/matrix-construct/tuwunel:v1.5.1, servernaammatrix-qa.test, poort28008). - Registreert drie tijdelijke gebruikers -
driver(stuurt inkomend verkeer),sut(het OpenClaw Matrix-account dat wordt getest),observer(verkeerscapture door derden). - Vult rooms vooraf die vereist zijn door de geselecteerde scenario's (main, threading, media, restart, secondary, allowlist, E2EE, verification DM, enz.).
- Start een child-OpenClaw-Gateway met de echte Matrix Plugin beperkt tot het SUT-account;
qa-channelwordt niet in het child geladen. - Voert scenario's opeenvolgend uit en observeert events via de Matrix-clients driver/observer.
- Breekt de homeserver af, schrijft rapport- en samenvattingsartefacten en sluit daarna af.
CLI
pnpm openclaw qa matrix [options]
Veelgebruikte vlaggen
| Vlag | Standaardwaarde | Beschrijving |
|---|---|---|
--profile <profile> |
all |
Scenarioprofiel. Zie Profielen. |
--fail-fast |
uit | Stop na de eerste mislukte check of het eerste mislukte scenario. |
--scenario <id> |
- | Voer alleen dit scenario uit. Herhaalbaar. Zie Scenario's. |
--output-dir <path> |
<repo>/.artifacts/qa-e2e/matrix-<timestamp> |
Waar rapporten, samenvatting, geobserveerde events en het uitvoerlog worden geschreven. Relatieve paden worden opgelost ten opzichte van --repo-root. |
--repo-root <path> |
process.cwd() |
Repository-root bij aanroepen vanuit een neutrale werkdirectory. |
--sut-account <id> |
sut |
Matrix-account-id binnen de QA-Gateway-configuratie. |
Providervlaggen
De baan gebruikt een echt Matrix-transport, maar de modelprovider is configureerbaar:
| Vlag | Standaardwaarde | Beschrijving |
|---|---|---|
--provider-mode <mode> |
live-frontier |
mock-openai voor deterministische mock-dispatch of live-frontier voor live frontierproviders. De legacy-alias live-openai werkt nog steeds. |
--model <ref> |
provider default | Primaire provider/model-ref. |
--alt-model <ref> |
provider default | Alternatieve provider/model-ref wanneer scenario's halverwege overschakelen. |
--fast |
uit | Schakel de snelle providermodus in waar ondersteund. |
Matrix-QA accepteert geen --credential-source of --credential-role. De baan richt lokaal wegwerpgebruikers in; er is geen gedeelde credential-pool om tegen te leasen.
Profielen
Het geselecteerde profiel bepaalt welke scenario's worden uitgevoerd.
| Profiel | Gebruik het voor |
|---|---|
all (default) |
Volledige catalogus. Traag maar uitputtend. |
fast |
Release-gate-subset die het live transportcontract oefent: canary, mention-gating, allowlist-blokkade, reply-vorm, restart-resume, thread-follow-up, thread-isolatie, reactieobservatie en metadatalevering voor exec-goedkeuring. |
transport |
Transportniveau-scenario's voor threading, DM, room, autojoin, mention/allowlist, goedkeuring en reacties. |
media |
Dekking voor image-, audio-, video-, PDF- en EPUB-bijlagen. |
e2ee-smoke |
Minimale E2EE-dekking - eenvoudige encrypted reply, thread-follow-up, geslaagde bootstrap. |
e2ee-deep |
Uitputtende E2EE-scenario's voor state-loss, backup, key en recovery. |
e2ee-cli |
openclaw matrix encryption setup- en verify *-CLI-scenario's uitgevoerd via de QA-harness. |
De exacte mapping staat in extensions/qa-matrix/src/runners/contract/scenario-catalog.ts.
Scenario's
De volledige lijst met scenario-id's is de MatrixQaScenarioId-union in extensions/qa-matrix/src/runners/contract/scenario-catalog.ts:15. Categorieën omvatten:
- threading -
matrix-thread-*,matrix-subagent-thread-spawn - top-level / DM / room -
matrix-top-level-reply-shape,matrix-room-*,matrix-dm-* - streaming en toolvoortgang -
matrix-room-partial-streaming-preview,matrix-room-quiet-streaming-preview,matrix-room-tool-progress-*,matrix-room-block-streaming - media -
matrix-media-type-coverage,matrix-room-image-understanding-attachment,matrix-attachment-only-ignored,matrix-unsupported-media-safe - routering -
matrix-room-autojoin-invite,matrix-secondary-room-* - reacties -
matrix-reaction-* - goedkeuringen -
matrix-approval-*(exec/Plugin-metadata, chunked fallback, afwijzingsreacties, threads entarget: "both"-routering) - restart en replay -
matrix-restart-*,matrix-stale-sync-replay-dedupe,matrix-room-membership-loss,matrix-homeserver-restart-resume,matrix-initial-catchup-then-incremental - mention-gating, bot-naar-bot en allowlists -
matrix-mention-*,matrix-allowbots-*,matrix-allowlist-*,matrix-multi-actor-ordering,matrix-inbound-edit-*,matrix-mxid-prefixed-command-block,matrix-observer-allowlist-override - E2EE -
matrix-e2ee-*(eenvoudige reply, thread-follow-up, bootstrap, recovery-key-levenscyclus, state-loss-varianten, serverbackupgedrag, device-hygiëne, SAS / QR / DM-verificatie, restart, artefactredactie) - E2EE CLI -
matrix-e2ee-cli-*(encryption setup, idempotente setup, bootstrapfout, recovery-key-levenscyclus, multi-account, gateway-reply round-trip, zelfverificatie)
Geef --scenario <id> (herhaalbaar) door om een handgekozen set uit te voeren; combineer met --profile all om profiel-gating te negeren.
Omgevingsvariabelen
| Variabele | Standaard | Effect |
|---|---|---|
OPENCLAW_QA_MATRIX_TIMEOUT_MS |
1800000 (30 min) |
Harde bovengrens voor de volledige uitvoering. |
OPENCLAW_QA_MATRIX_CANARY_TIMEOUT_MS |
45000 |
Grens voor het eerste canary-antwoord. Release-CI verhoogt dit op gedeelde runners zodat een trage eerste Gateway-beurt niet mislukt voordat scenariodekking begint. |
OPENCLAW_QA_MATRIX_NO_REPLY_WINDOW_MS |
8000 |
Stille periode voor negatieve no-reply-asserties. Begrensd tot ≤ de uitvoeringstime-out. |
OPENCLAW_QA_MATRIX_CLEANUP_TIMEOUT_MS |
90000 |
Grens voor Docker-opruiming. Foutmeldingen bevatten de herstelopdracht docker compose ... down --remove-orphans. |
OPENCLAW_QA_MATRIX_TUWUNEL_IMAGE |
ghcr.io/matrix-construct/tuwunel:v1.5.1 |
Overschrijf de homeserver-image bij validatie tegen een andere Tuwunel-versie. |
OPENCLAW_QA_MATRIX_PROGRESS |
aan | 0 onderdrukt [matrix-qa] ...-voortgangsregels op stderr. 1 dwingt ze in te schakelen. |
OPENCLAW_QA_MATRIX_CAPTURE_CONTENT |
geredigeerd | 1 behoudt berichttekst en formatted_body in matrix-qa-observed-events.json. Standaard wordt dit geredigeerd om CI-artefacten veilig te houden. |
OPENCLAW_QA_MATRIX_DISABLE_FORCE_EXIT |
uit | 1 slaat de deterministische process.exit over na het schrijven van artefacten. Standaard wordt afsluiten afgedwongen omdat native crypto-handles van matrix-js-sdk de event loop actief kunnen houden nadat artefacten zijn voltooid. |
OPENCLAW_RUN_NODE_OUTPUT_LOG |
niet ingesteld | Wanneer ingesteld door een buitenste launcher (bijv. scripts/run-node.mjs), hergebruikt Matrix QA dat logpad in plaats van een eigen tee te starten. |
Uitvoerartefacten
Geschreven naar --output-dir:
matrix-qa-report.md- Markdown-protocolrapport (wat is geslaagd, mislukt, overgeslagen, en waarom).matrix-qa-summary.json- Gestructureerde samenvatting geschikt voor CI-parsing en dashboards.matrix-qa-observed-events.json- Waargenomen Matrix-events van de driver- en observer-clients. Bodies worden geredigeerd tenzijOPENCLAW_QA_MATRIX_CAPTURE_CONTENT=1; goedkeuringsmetadata wordt samengevat met geselecteerde veilige velden en een afgekapt opdrachtvoorbeeld.matrix-qa-output.log- Gecombineerde stdout/stderr van de uitvoering. AlsOPENCLAW_RUN_NODE_OUTPUT_LOGis ingesteld, wordt het log van de buitenste launcher in plaats daarvan hergebruikt.
De standaarduitvoermap is <repo>/.artifacts/qa-e2e/matrix-<timestamp> zodat opeenvolgende uitvoeringen elkaar niet overschrijven.
Triage-tips
- Uitvoering blijft hangen tegen het einde: native crypto-handles van
matrix-js-sdkkunnen langer leven dan de harness. Standaard wordt een schoneprocess.exitafgedwongen nadat artefacten zijn geschreven; als jeOPENCLAW_QA_MATRIX_DISABLE_FORCE_EXIT=1hebt uitgeschakeld, verwacht dan dat het proces blijft hangen. - Opruimfout: zoek naar de afgedrukte herstelopdracht (een aanroep van
docker compose ... down --remove-orphans) en voer die handmatig uit om de homeserver-poort vrij te geven. - Flaky vensters voor negatieve asserties in CI: verlaag
OPENCLAW_QA_MATRIX_NO_REPLY_WINDOW_MS(standaard 8 s) wanneer CI snel is; verhoog het op trage gedeelde runners. - Geredigeerde bodies nodig voor een bugrapport: voer opnieuw uit met
OPENCLAW_QA_MATRIX_CAPTURE_CONTENT=1en voegmatrix-qa-observed-events.jsonbij. Behandel het resulterende artefact als gevoelig. - Andere Tuwunel-versie: wijs
OPENCLAW_QA_MATRIX_TUWUNEL_IMAGEnaar de versie die wordt getest. De lane controleert alleen de vastgepinde standaardimage.
Live transport-contract
Matrix is een van de drie live transport-lanes (Matrix, Telegram, Discord) die een enkele contractchecklist delen die is gedefinieerd in QA-overzicht → Live transport-dekking. qa-channel blijft de brede synthetische suite en maakt opzettelijk geen deel uit van die matrix.
Gerelateerd
- QA-overzicht - algemene QA-stack en live transport-contract
- QA Channel - synthetische channel-adapter voor repo-ondersteunde scenario's
- Testen - tests uitvoeren en QA-dekking toevoegen
- Matrix - de channel-Plugin die wordt getest