Discord-Roundtrip mit Parallels
Verwenden, wenn ein macOS-Parallels-Smoke-Test die bidirektionale End-to-End-Zustellung von Discord nachweisen muss.
Ziel
Abdecken von:
- Installation auf einem frischen macOS-Snapshot
- Onboarding + Gateway-Integrität
- Senden einer Nachricht (
message send) vom Gast an Discord - Der Host sieht diese Nachricht auf Discord
- Der Host postet eine neue Discord-Nachricht
- Der Gast liest (
message read) diese neue Nachricht
Eingaben
- Host-Umgebungsvariable mit dem Token für einen dedizierten, vom Betreiber freigegebenen QA-Bot
- Vom Betreiber freigegebene QA-Guild- und Channel-IDs
OPENAI_API_KEY
Bevorzugte Ausführung
Laden Sie OPENCLAW_PARALLELS_DISCORD_TOKEN über die genehmigte Secret-Quelle.
Setzen Sie OPENCLAW_PARALLELS_DISCORD_GUILD_ID und OPENCLAW_PARALLELS_DISCORD_CHANNEL_ID
auf das genehmigte QA-Ziel. Die Testumgebung konfiguriert diesen Bot innerhalb des ausgewählten Gasts.
pnpm test:parallels:macos \
--discord-token-env OPENCLAW_PARALLELS_DISCORD_TOKEN \
--discord-guild-id "$OPENCLAW_PARALLELS_DISCORD_GUILD_ID" \
--discord-channel-id "$OPENCLAW_PARALLELS_DISCORD_CHANNEL_ID" \
--json
Hinweise
- Snapshot-Ziel: möglichst nahe an
macOS 26.3.1 fresh. - Der Snapshot-Auflöser bevorzugt jetzt übereinstimmende
*-poweroff*-Klon-Snapshots, wenn der Basis-Hinweis ebenfalls passt. Dadurch kann die Testumgebung Festplatten-Wiederherstellungs-Snapshots wiederverwenden, ohne einen längeren Hinweis zu übergeben. - Wenn Windows/Linux-Snapshot-Wiederherstellungsprotokolle
PET_QUESTION_SNAPSHOT_STATE_INCOMPATIBLE_CPUanzeigen, verwerfen Sie den angehaltenen Status einmal, erstellen Sie einen*-poweroff*-Ersatz-Snapshot und führen Sie den Test erneut aus. Die Smoke-Skripte starten jetzt automatisch wiederhergestellte Power-Off-Snapshots. - Die Testumgebung konfiguriert Discord innerhalb des Gasts; es gibt keinen eingecheckten Token/Konfiguration.
- Verwenden Sie den
openclaw-Wrapper für Gast-Nachrichten (message send/read);node openclaw.mjs message ...stellt die verzögerten Nachrichten-Unterbefehle nicht auf die gleiche Weise bereit. - Schreiben Sie
channels.discord.guildsin einem einzelnen JSON-Objekt (--strict-json), nicht mit gepunktetenconfig set channels.discord.guilds.<snowflake>...-Pfaden; numerische Snowflakes werden wie Array-Indizes behandelt. - Vermeiden Sie
prlctl enter/ expect für lange Discord-Einrichtungsskripte; es führt zu Zeilenumbrüchen/Verfälschungen langer Befehle. Verwenden Sieprlctl exec --current-user /bin/sh -lc ...für die Discord-Konfigurationsphase. - Vollständige 3-OS-Durchläufe: Die gemeinsame Build-Sperre ist parallel sicher, aber die Snapshot-Wiederherstellung bleibt ein Parallels-Engpass. Bevorzugen Sie serialisierte Windows/Linux-Wiederherstellungs-intensive Wiederholungen, wenn der Host bereits ausgelastet ist.
- Die Bereinigung der Testumgebung löscht die temporären Discord-Smoke-Nachrichten beim Beenden.
- Die Testumgebung versucht, den ausgewählten Gast nach erfolgreichem Discord-Nachweis zu stoppen und warnt, falls der Stopp fehlschlägt. Für Ad-hoc-Discord-Prüfungen stoppen Sie nur den aufgabeneigenen Gast vor der Übergabe. Lassen Sie den mit Discord konfigurierten Test-Gast nach dem Nachweis nicht laufen.
- Phasenprotokolle:
/tmp/openclaw-parallels-smoke.* - Maschinenübersicht: übergeben Sie
--json - Wenn der Roundtrip fehlschlägt, überprüfen Sie zuerst
fresh.discord-roundtrip.logunddiscord-last-readback.jsonim Ausführungsverzeichnis.
Bestehenskriterien
- Der angeforderte Durchlauf für den frischen oder Upgrade-Pfad ist erfolgreich
- Die Zusammenfassung meldet
discord=passfür diesen Pfad - Die ausgehende Nonce des Gasts erscheint im Kanalverlauf
- Die eingehende Nonce des Hosts erscheint in der Ausgabe von
openclaw message read