Review fixes (REQUEST_CHANGES round 1): 1. HIGH activation-negative-401.yaml: after dismissing the "Connection Failed" alert the app stays on the Add-Connection modal (handleQuickConnect's failure branch never calls router.back()), so the old `text: "No Connection"` assertion (Sessions-tab empty state) could never pass. Now asserts connect-submit-button is still visible instead. 2. MEDIUM mock-opencode-server.ts: prompt_async now parses the request body, persists the USER's message, and broadcasts it (message.updated + message.part.updated) BEFORE the canned assistant reply — matching real server behavior. Without this, the app's handleEvent strips the optimistic temp- user message when the assistant's message.updated arrives and the sent message vanishes from the transcript. activation-positive.yaml now also asserts chat-bubble-user and the user's message text are visible after the reply lands, so that regression class is actually covered. 3. MEDIUM activation-e2e.yml: timeout-minutes 15 -> 60. The job runs the same npm install + prebuild + assembleRelease + emulator pipeline that cua-smoke.yml budgets 60 min for (emulator-boot-timeout alone is 10 min). 4. MEDIUM activation-e2e.yml: replicated cua-smoke.yml's "Purge stale generated sources" step — the Gradle cache key/restore-keys are shared with that workflow, so the stale-autolinking-tree failure mode (compileReleaseJavaWithJavac against the old package id) applies here too. Verified locally: tsc --noEmit clean; npm test 81/81 pass; all three touched YAML files parse valid; mock server exercised standalone — full prompt cycle confirms GET /session/:id/message returns BOTH user and assistant messages, SSE order is message.updated(user) -> message.part.updated(user) -> busy -> message.updated(assistant) -> message.part.updated(assistant) -> idle, user events carry the sessionID/messageID fields handleEvent filters on, and --fail-auth mode returns 401. Still no emulator run in this environment. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NJKAQ6HAikWGQK7PGZ5Y4E
83 lines
2.4 KiB
YAML
83 lines
2.4 KiB
YAML
appId: cc.agentlabs.opencode
|
|
name: Activation - positive path (consent -> connect -> send -> reply)
|
|
---
|
|
# Positive activation flow: first launch -> telemetry consent -> quick connect
|
|
# to the mock opencode server (tests/fixtures/mock-opencode-server.ts, run
|
|
# normally on the port below) -> connected indicator -> new session -> send a
|
|
# message -> assert the streamed canned reply renders.
|
|
#
|
|
# The CI job starts `node tests/fixtures/mock-opencode-server.ts --port 4096`
|
|
# on the runner host BEFORE this flow runs. The Android emulator reaches the
|
|
# runner host via the standard emulator alias 10.0.2.2.
|
|
|
|
- launchApp:
|
|
clearState: true
|
|
- takeScreenshot: positive-S1_launch_consent_modal
|
|
- assertVisible:
|
|
id: "telemetry-consent-card"
|
|
- tapOn:
|
|
id: "telemetry-decline-button"
|
|
|
|
- assertVisible:
|
|
text: "No Connection"
|
|
- takeScreenshot: positive-S2_empty_state
|
|
- tapOn:
|
|
id: "add-connection-button"
|
|
|
|
- assertVisible:
|
|
id: "connect-ip-input"
|
|
- takeScreenshot: positive-S3_add_connection_form
|
|
- tapOn:
|
|
id: "connect-ip-input"
|
|
- inputText: "10.0.2.2"
|
|
- tapOn:
|
|
id: "connect-port-input"
|
|
- eraseText
|
|
- inputText: "4096"
|
|
- hideKeyboard
|
|
- takeScreenshot: positive-S4_server_url_entered
|
|
- tapOn:
|
|
id: "connect-submit-button"
|
|
|
|
- extendedWaitUntil:
|
|
visible:
|
|
id: "connection-status-dot"
|
|
timeout: 20000
|
|
- assertVisible:
|
|
id: "connection-status-dot"
|
|
- takeScreenshot: positive-S5_connected
|
|
|
|
- tapOn:
|
|
id: "new-session-fab"
|
|
- extendedWaitUntil:
|
|
visible:
|
|
id: "chat-message-input"
|
|
timeout: 15000
|
|
- takeScreenshot: positive-S6_session_opened
|
|
|
|
- tapOn:
|
|
id: "chat-message-input"
|
|
- inputText: "Hello from the activation e2e test"
|
|
- hideKeyboard
|
|
- takeScreenshot: positive-S7_message_typed
|
|
- tapOn:
|
|
id: "chat-send-button"
|
|
|
|
- extendedWaitUntil:
|
|
visible:
|
|
text: "Hello from the mock opencode server"
|
|
timeout: 20000
|
|
- assertVisible:
|
|
id: "chat-bubble-assistant"
|
|
- assertVisible:
|
|
text: "Hello from the mock opencode server"
|
|
# The USER's message must still be in the transcript after the reply lands.
|
|
# Regression guard: any message.updated event strips optimistic temp-
|
|
# messages (src/stores/sessions.ts handleEvent), so if the server never
|
|
# persisted/broadcast the user's message, it would vanish here.
|
|
- assertVisible:
|
|
id: "chat-bubble-user"
|
|
- assertVisible:
|
|
text: "Hello from the activation e2e test"
|
|
- takeScreenshot: positive-S8_reply_received
|