Skip to content

feat(ci): add explicit Safari tap/type/scroll smoke scenarios (#501)#583

Merged
shaun0927 merged 1 commit intodevelopfrom
feat/501-safari-explicit-scenarios
Apr 16, 2026
Merged

feat(ci): add explicit Safari tap/type/scroll smoke scenarios (#501)#583
shaun0927 merged 1 commit intodevelopfrom
feat/501-safari-explicit-scenarios

Conversation

@shaun0927
Copy link
Copy Markdown
Owner

Summary

Epic #484's acceptance criterion for the Safari smoke is "Safari 자동화 — 임의 페이지 탭/입력/스크롤 통과", but the existing `safari-smoke` job only runs `opensafari audit` (a one-shot QA scan). No explicit tap/type/scroll interaction was ever exercised, so the corresponding checkbox on #501 could not be flipped honestly even though the job was green.

Changes

File Change
`tests/integration/safari-smoke.live.test.ts` (NEW) Live integration suite with tap (button click), type (input event dispatch), and scroll (`window.scrollTo` + `scrollY` assertion). Fixture HTML is injected into https://example.com via `document.body.innerHTML` so the assertions don't depend on whatever the upstream page ships today.
`.github/workflows/headless-smoke.yml` New `Run Safari explicit tap/type/scroll scenarios` step in the `safari-smoke` job, runs after the audit. JUnit emitted into the existing `safari-smoke-junit` artifact.

Why this works headlessly

All three interactions route through the WebKit Remote Debugging Protocol's `Runtime.evaluate`, which is the `webkit` backend kind by definition — no AX bridge invocation, no SimulatorKit HID, no AppleScript. This satisfies the existing `Verify no AppleScript fallback was loaded` step as a side-effect, and is the same protocol the WebView smoke job uses for its DOM assertions.

Test plan

  • `Headless Smoke Tests` workflow on this PR runs the new step and reports 4 passed (tap, type, scroll, routing).
  • `safari-smoke-junit` artifact contains both `safari-audit.junit.xml` and `safari-scenarios.junit.xml`.
  • Scenario test does NOT use ax-bridge / sim-hid-bridge / AppleScript (verified by the existing audit-log probe).

Towards: #501

🤖 Generated with Claude Code

Epic #484's acceptance criterion for the Safari smoke job is
"Safari 자동화 — 임의 페이지 탭/입력/스크롤 통과", but the existing
`safari-smoke` job only runs `opensafari audit` (a one-shot QA scan).
The explicit interaction scenarios were never exercised, so the
corresponding checkbox on #501 could not be flipped honestly.

Changes:
- Add `tests/integration/safari-smoke.live.test.ts` covering
  tap (button click), type (input dispatch), and scroll
  (window.scrollTo + scrollY check). The fixture HTML is injected
  into https://example.com via `document.body.innerHTML` so the
  assertions don't depend on whatever the upstream page happens to
  ship that day.
- Add a "Run Safari explicit tap/type/scroll scenarios" step to the
  safari-smoke job after the audit step. It runs the new live test,
  emits JUnit alongside the existing audit JUnit, and uploads both
  in the same artifact.

All three interactions route through the WebKit Remote Debugging
Protocol (`Runtime.evaluate`), which is the `webkit` headless
backend by definition — this satisfies the existing
"Verify no AppleScript fallback was loaded" assertion as a
side-effect.

Towards: #501
@shaun0927 shaun0927 force-pushed the feat/501-safari-explicit-scenarios branch from 08a5a1f to 06772f4 Compare April 16, 2026 13:51
Copy link
Copy Markdown
Owner Author

@shaun0927 shaun0927 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code review: P0=0, P1=0, P2=2 (low). Clean Safari integration test with proper opt-in guard, fixture injection, and routing assertion. LGTM.

@shaun0927 shaun0927 merged commit a03b78d into develop Apr 16, 2026
7 checks passed
@shaun0927 shaun0927 deleted the feat/501-safari-explicit-scenarios branch April 16, 2026 14:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant