[工程][CI] 增加扩展浏览器冒烟验证 #9

Closed
opened 2026-09-15 00:56:28 +08:00 by CoderLambert · 2 comments
CoderLambert commented 2026-09-15 00:56:28 +08:00 (Migrated from github.com)

Execution State

READY

Observed base: main@909e7dc
Execution base: latest main

Problem

当前 CI 只验证 Node 语法、单元测试和 Manifest JSON,无法确认解压后的 Manifest V3 扩展能在 Chromium 中加载并完成基础 Workspace 交互。

Target

增加不依赖 Provider 登录态的 Chromium 浏览器冒烟任务,验证扩展运行时加载和关键本地 UI 流程。

Invariants

  • 不使用真实 Provider Cookie、账号或回答内容。
  • 不扩大 Manifest 权限,不改变 Provider 运行架构。
  • 不把浏览器冒烟替代真实 Provider selector/live smoke。
  • 失败时保留 Playwright trace/screenshot 等诊断证据(如可用)。

Execution Scope

Expected:

  • .github/workflows/**
  • tests/browser-smoke.cjs

Sensitive / coordinate before expanding:

  • CI workflow permissions、Secrets、浏览器版本和发布门禁。

Out of scope by default:

  • 真实账号 Provider E2E
  • Provider DOM selector 重构
  • Release workflow 改造

Acceptance Criteria

  • GitHub Actions 安装 Chromium 并以扩展加载模式运行冒烟脚本。
  • 脚本验证 Workspace 页面加载、Provider 入口渲染、Session 保存入口和空 Handoff 防护。
  • CI 权限保持最小化,不需要账号 Secrets。
  • 失败时上传浏览器诊断产物。

Validation

Focused:

  • Node syntax check for smoke script

Repository / Regression:

  • Existing CI remains unchanged for check/test/manifest validation

Browser:

  • Chromium extension smoke in GitHub Actions

Required CI:

  • New browser-smoke job passes

Dependencies

Hard blocked by:

  • none

Conflict / shared surfaces:

  • .github/workflows/** has one writer for this change
## Execution State READY Observed base: main@909e7dc Execution base: latest main ## Problem 当前 CI 只验证 Node 语法、单元测试和 Manifest JSON,无法确认解压后的 Manifest V3 扩展能在 Chromium 中加载并完成基础 Workspace 交互。 ## Target 增加不依赖 Provider 登录态的 Chromium 浏览器冒烟任务,验证扩展运行时加载和关键本地 UI 流程。 ## Invariants - 不使用真实 Provider Cookie、账号或回答内容。 - 不扩大 Manifest 权限,不改变 Provider 运行架构。 - 不把浏览器冒烟替代真实 Provider selector/live smoke。 - 失败时保留 Playwright trace/screenshot 等诊断证据(如可用)。 ## Execution Scope Expected: - `.github/workflows/**` - `tests/browser-smoke.cjs` Sensitive / coordinate before expanding: - CI workflow permissions、Secrets、浏览器版本和发布门禁。 Out of scope by default: - 真实账号 Provider E2E - Provider DOM selector 重构 - Release workflow 改造 ## Acceptance Criteria - [ ] GitHub Actions 安装 Chromium 并以扩展加载模式运行冒烟脚本。 - [ ] 脚本验证 Workspace 页面加载、Provider 入口渲染、Session 保存入口和空 Handoff 防护。 - [ ] CI 权限保持最小化,不需要账号 Secrets。 - [ ] 失败时上传浏览器诊断产物。 ## Validation Focused: - Node syntax check for smoke script Repository / Regression: - Existing CI remains unchanged for check/test/manifest validation Browser: - Chromium extension smoke in GitHub Actions Required CI: - New browser-smoke job passes ## Dependencies Hard blocked by: - none Conflict / shared surfaces: - `.github/workflows/**` has one writer for this change
CoderLambert commented 2026-09-15 00:58:03 +08:00 (Migrated from github.com)

Status: In Progress

Progress

  • Add a least-privilege Browser Smoke workflow for push, pull request, and manual runs
  • Install pinned Playwright/Chromium in the workflow
  • Verify extension loading and Workspace provider rendering
  • Verify local Session save entry
  • Verify empty Agent Handoff is blocked
  • Upload Playwright trace diagnostics when the job fails

Changes

  • Added .github/workflows/browser-smoke.yml.
  • Added tests/browser-smoke.cjs.
  • External HTTPS requests are aborted during the smoke run so no Provider credentials or live content are required.

Commit

c6194cc

Tests

  • node --check tests/browser-smoke.cjs passed
  • git diff --check passed
  • GitHub browser job is configured but not locally executed by request

Known Limitations

  • This validates extension shell/runtime and local Workspace behavior only; authenticated Provider DOM/selectors need a separately isolated live smoke environment.
Status: In Progress ## Progress - [x] Add a least-privilege Browser Smoke workflow for push, pull request, and manual runs - [x] Install pinned Playwright/Chromium in the workflow - [x] Verify extension loading and Workspace provider rendering - [x] Verify local Session save entry - [x] Verify empty Agent Handoff is blocked - [x] Upload Playwright trace diagnostics when the job fails ## Changes - Added `.github/workflows/browser-smoke.yml`. - Added `tests/browser-smoke.cjs`. - External HTTPS requests are aborted during the smoke run so no Provider credentials or live content are required. ## Commit c6194cc ## Tests - `node --check tests/browser-smoke.cjs` passed - `git diff --check` passed - GitHub browser job is configured but not locally executed by request ## Known Limitations - This validates extension shell/runtime and local Workspace behavior only; authenticated Provider DOM/selectors need a separately isolated live smoke environment.
CoderLambert commented 2026-09-15 00:59:34 +08:00 (Migrated from github.com)

[CLOSURE]

Merged commit: c6194cc

Acceptance Criteria:

Validation:

  • focused: PASS (node --check tests/browser-smoke.cjs)
  • repository/regression: PASS (CI run 34871827925)
  • browser: PASS (Browser Smoke run 34871827934)
  • required CI: PASS

Scope deviation:

  • NONE

Security/permission delta:

  • NONE; workflow uses contents: read and no Secrets

Follow-ups:

  • authenticated Provider live smoke remains a separate future task
[CLOSURE] Merged commit: c6194cc Acceptance Criteria: - complete - GitHub Actions Browser Smoke run passed: https://github.com/CoderLambert/ai-parallel/actions/runs/34871827934 Validation: - focused: PASS (`node --check tests/browser-smoke.cjs`) - repository/regression: PASS (CI run 34871827925) - browser: PASS (Browser Smoke run 34871827934) - required CI: PASS Scope deviation: - NONE Security/permission delta: - NONE; workflow uses `contents: read` and no Secrets Follow-ups: - authenticated Provider live smoke remains a separate future task
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: lambert/ai-parallel#9