Files
insomnia/.github/workflows
Bob QiuandClaude Sonnet 5.5 54e46851ff test(e2e): add insomnia-test Playwright framework and CI workflow [1/6] (#10594)
* feat: enhance accessibility and testing capabilities across UI components

- Added data-testid attributes to various components for improved testing.
- Updated mock-url-bar to include test IDs for method and path.
- Enhanced generate-code-modal with test IDs for dropdowns.
- Included test IDs in git-branches-modal and git-project-branches-modal for error messages.
- Added test IDs to import-modal header and input-vault-key-modal for error display.
- Enhanced new-workspace-modal with test IDs for mock server type options.
- Included test IDs in select-modal for the select element.
- Added test IDs in sync-merge-modal for merge conflict items.
- Enhanced visual-diff components with test IDs for better test coverage.
- Included test IDs in workspace-certificates-modal for CA certificate section.
- Enhanced workspace-environments-edit-modal with test IDs for environment icons.
- Added test IDs in pane-header for breadcrumbs.
- Included test IDs in request-result-card for runner results.
- Enhanced request-test-result-pane with test IDs for test result rows.
- Added test IDs in project-create-form for unknown fields warning.
- Enhanced AI settings with test IDs for toggle switches.
- Included test IDs in boolean-setting for settings labels.
- Enhanced scripting-settings with test IDs for rule toggles.
- Added test IDs in sidebar components for search fields and nodes.
- Enhanced spec-view with test IDs for method buttons.
- Included test IDs in tab components for tab titles.
- Enhanced tags with test IDs for size, time, and URL tags.
- Added test IDs in tag-editor for tag arguments.
- Enhanced toast-notification with test IDs for toast body and content.
- Included test IDs in response-headers-viewer for header rows and values.
- Enhanced event-log-view with test IDs for event rows and cells.

* feat: add remaining test ids for folder pane, staging button, drop indicator and test results

- folder-pane on the request group Tabs
- stage-this-file / unstage-this-file on the git staging preview button
- drop-indicator-folder-name and data-valid on the sidebar drop indicator
- test-result-case / test-result-error inside the test result name

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* feat: add data-selected attributes for improved testing and UI state indication

* fix: use unique test ids for graphql explorer root types

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* fix: make sidebar data-parent-id return the parent row id

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* feat: enhance accessibility and testing capabilities across UI components

- Added data-testid attributes to various components for improved testing.
- Updated mock-url-bar to include test IDs for method and path.
- Enhanced generate-code-modal with test IDs for dropdowns.
- Included test IDs in git-branches-modal and git-project-branches-modal for error messages.
- Added test IDs to import-modal header and input-vault-key-modal for error display.
- Enhanced new-workspace-modal with test IDs for mock server type options.
- Included test IDs in select-modal for the select element.
- Added test IDs in sync-merge-modal for merge conflict items.
- Enhanced visual-diff components with test IDs for better test coverage.
- Included test IDs in workspace-certificates-modal for CA certificate section.
- Enhanced workspace-environments-edit-modal with test IDs for environment icons.
- Added test IDs in pane-header for breadcrumbs.
- Included test IDs in request-result-card for runner results.
- Enhanced request-test-result-pane with test IDs for test result rows.
- Added test IDs in project-create-form for unknown fields warning.
- Enhanced AI settings with test IDs for toggle switches.
- Included test IDs in boolean-setting for settings labels.
- Enhanced scripting-settings with test IDs for rule toggles.
- Added test IDs in sidebar components for search fields and nodes.
- Enhanced spec-view with test IDs for method buttons.
- Included test IDs in tab components for tab titles.
- Enhanced tags with test IDs for size, time, and URL tags.
- Added test IDs in tag-editor for tag arguments.
- Enhanced toast-notification with test IDs for toast body and content.
- Included test IDs in response-headers-viewer for header rows and values.
- Enhanced event-log-view with test IDs for event rows and cells.

* feat: add remaining test ids for folder pane, staging button, drop indicator and test results

- folder-pane on the request group Tabs
- stage-this-file / unstage-this-file on the git staging preview button
- drop-indicator-folder-name and data-valid on the sidebar drop indicator
- test-result-case / test-result-error inside the test result name

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* test(insomnia-test): add Playwright E2E framework, CI workflow and write-insomnia-test skill

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* test(insomnia-test): add petstore fixture required by the echo server at startup

misc/echo-server.js reads misc/fixtures/petstore-swagger.json when it
starts, so the fixture must land together with the server; otherwise every
shard's webServer exits with ENOENT.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* fix(insomnia-test): address PR review comments

- bind mock-api and echo-server to 127.0.0.1
- remove per-test dataPath after use
- throw when setCodeMirrorValue does not hold after retries
- drop continue-on-error from the build job
- shorten cookie waitForPersisted docstring

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* feat(insomnia-test): add mock servers referenced by constants and flows

Adds the event-stream, socket.io, ws-echo, mcp, grpc, git, oauth2 and
mock-bin servers (bound to 127.0.0.1), their proto/upload fixtures, npm
scripts and Playwright webServer entries, so flows that reference them
no longer fail with connection refused.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* chore(insomnia-test): fix lint errors

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* fix(insomnia-test): send mock-bin-server responses as text/plain with nosniff

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* fix(insomnia-test): don't echo exception text in mock-bin-server 500 response

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* fix(insomnia-test): break flow-manager/workspace.flow import cycle

WorkspaceFlow now takes a structural RequestFlows dependency instead of
importing FlowManager, which removes the 3 new circular references.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* fix(insomnia-test): address Copilot review comments

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* refactor(insomnia-test): rename Response model to ResponseView

The type represents the response pane (response data plus console, stream
events and script test results), not the network response, and clashed
with the insomnia-data Response name. Update flows, pages, specs, JSDoc
and the write-insomnia-test skill accordingly.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* refactor(insomnia-test): split overloaded Flow methods into explicit ones

WorkspaceFlow.create/duplicate/rename, ExportFlow.export and
EnvironmentFlow.create dispatched on argument types via typeof/instanceof
and casts, so a call site did not show which flow it triggered. Replace
them with explicitly named methods (createProject, openLocalGitFolder,
cloneGitProject, createCollection, duplicateRequest, renameCollection,
exportProject, createBaseEnvironment, ...) and update the
write-insomnia-test skill docs.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* refactor(insomnia-test): import expect directly from @playwright/test

Drop the pass-through re-exports of expect from misc/fixtures.ts and
misc/git-fixtures.ts, import it from @playwright/test in specs, and
update the write-insomnia-test skill accordingly.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* refactor(insomnia-test): rename certificate model and update imports

* fix: update watcherExclude settings in VSCode configuration

* chore: update .gitignore to remove test artifacts and add new file for insomnia-test

* feat: update electron-builder config for E2E testing and add eslint config for insomnia-test

* chore: remove unused file watcher exclusions from VSCode settings

* chore: reorder import statements for consistency in response.page.ts

* fix(insomnia-test): locate key/value rows by position to survive provisional key swap

setKeyValuePairs resolved the new row by its data-key, which changes from
the provisional pair-blank_* key to the persisted id once the name is
saved. The value editor locator then never resolved, timing out in
setCodeMirrorValue (template-tag header-name, http happy-path, query-params).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* fix(request-page): ensure stable attribute before setting value to prevent data loss

* fix(request-page): locate rows by fixed position to prevent stale locators during value entry

* fix(insomnia-test): update shard count calculation to derive from test cases and improve node_modules handling

* fix(reference): update request state terminology and clarify enum references in documentation

* refactor(insomnia-test): consolidate framework changes into base PR

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* fix(reference): update terminology from Response to ResponseView for consistency in documentation

* feat(insomnia-test): add response export, folder environment, environment picker, variable-source and prompt-tag helpers

Page/Flow helpers used by the HTTP, environment and template-tag specs:
- ResponsePage/HttpRequestFlow: export response (raw/prettified/HTTP debug), Save To File, export option state
- FolderPage/FolderFlow: set folder environment variables
- EnvironmentPage/EnvironmentFlow: environment pickers, Add Project Environment, collection sub-environment privacy
- VariableSourcePage/VariableSourceFlow: variable tooltip, source modal and Open navigation
- TemplateTagPage/TemplateTagFlow: Prompt tag answer/clear cache
- echo-server: /large-json route; PageManager passes the Electron app to ResponsePage

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* feat(insomnia-test): add page/flow methods, enums, models and mock-server endpoints used by later specs

Framework-level additions moved from test/refactor_e2e_tests: git diff-view and
unknown-fields helpers, MCP capability/list helpers, cloud-sync commit dialog
helpers, upgrade fixture, MCP scriptable list server and custom-CA port,
cloud-sync seed-project endpoint, certs typings and cookie Expires parsing.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* Refactor code structure for improved readability and maintainability

* fix(insomnia-test): address code-scanning findings in mock servers and git-sync page

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* feat(insomnia-test): add setParamsBulk to set request params via the bulk editor

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* test(insomnia-test): sync framework-layer page object and coverage fixes

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* fix(insomnia-test): update SKILL.md and reference.md for linting and focus mode behavior

* test(insomnia-test): add requireItemNode with DEFAULT_TIMEOUT and descriptive error

Flows that dereference the tree lookup result with node! now use
requireItemNode, which waits up to DEFAULT_TIMEOUT and throws naming the
missing node. findItemNode keeps its short budget and undefined result for
absence checks.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* ci(insomnia-test): align workflow with test-e2e.yml

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* fix(test): clarify comments on worker configuration and session handling

* feat(insomnia-test): add type-check script and workflow step

* fix(insomnia-test): update node setup to include GitHub package registry and scope

* chore(insomnia-test): address review cleanup items (#17-#27)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* refactor(insomnia-test): update SKILL.md for improved test case writing guidance and remove outdated reference.md

* feat: add mock servers for various protocols and OAuth2 support

- Introduced `mock-bin-server.ts` for handling mock API requests and responses.
- Added `oauth2-server.ts` to simulate OAuth2 authorization flows with in-memory token management.
- Implemented `socket-server.ts` for WebSocket communication with authentication.
- Created `ws-echo-server.ts` for echoing WebSocket messages.
- Updated `upgrade-fixture.ts` to use `import.meta.dirname` for path resolution.
- Modified `package.json` to switch script files from `.js` to `.ts` for TypeScript compatibility.
- Adjusted Playwright configuration to reference TypeScript files for mock servers.
- Enhanced cloud sync mock to reflect changes in file extensions.
- Updated TypeScript configuration to allow importing TypeScript extensions.

* refactor(insomnia-test): migrate electron-builder config to TypeScript and remove outdated CJS version

* fix(insomnia-test): update ESLint config to include electron-builder.config.ts and clarify root config error

* refactor: update button locators to use role and test ID selectors

- Replaced various button locators using text matching with role and test ID selectors across multiple pages for improved accessibility and maintainability.
- Updated methods in GitSyncPage, GrpcRequestPage, HttpRequestPage, ImportPage, InvitePage, McpClientPage, MockServerPage, PreferencesPage, ProjectSettingsPage, RequestPage, ResponsePage, RunnerPage, ScriptTabComponent, SocketIORequestPage, TemplateTagPage, VariableSourcePage, and WorkspacePage.
- Enhanced code readability and consistency by standardizing locator strategies.

* feat: add step instrumentation for flow methods

- Introduced a new `step` decorator to enhance method reporting in flows.
- Removed the old step instrumentation logic from `step-instrumentation.ts`.
- Updated various flow classes to utilize the new `@step()` decorator for method tracking.
- Simplified page manager by removing the instrumentWithSteps function.
- Adjusted tests to ensure compatibility with the new step reporting mechanism.

* refactor: remove module type from package.json and update environment type handling

* test: verify logging of after-response script in HTTP request flow

* fix: make Insomnia binary and helper executables executable to prevent EACCES errors

* feat: add shard matrix job to dynamically calculate test distribution for parallel execution

* fix: improve tree row expansion logic to handle re-rendering issues

* fix: enhance expandAllCollapsed method documentation for clarity on toggle behavior

* refactor: update RequestAuthentication imports and definitions for consistency across models

* feat: add new components for UI interactions and refactor existing pages

- Introduced `TabsComponent`, `StatusTagComponent`, `PillTagComponent`, `ToastComponent`, `ToggleButtonComponent`, `PressedToggleComponent`, `EnabledLabelToggleComponent`, `SwitchComponent`, `CheckboxComponent`, `RadioGroupComponent`, `TooltipComponent`, and `TreeComponent` to enhance UI testing capabilities with Playwright.
- Refactored `AuthTabComponent`, `BasePage`, `CertificatesPage`, `CloudSyncPage`, `EnvironmentPage`, `HttpRequestPage`, `MockServerPage`, `RequestPage`, `ResponsePage`, `TabPanelPage`, and `WorkspacePage` to utilize new components for improved readability and maintainability.
- Updated methods for toggling states, reading values, and interacting with UI elements to leverage the new component structure.
- Enhanced test reliability by ensuring interactions are properly awaited and validated.

* refactor: sync product test ids and e2e framework changes from test/refactor_e2e_tests

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* feat: add data-selected attributes for improved testing and UI state indication

* feat: add Preferences dialog pages for AI settings, credentials, plugins, and vault management

- Implemented GitHistoryDialogPage for managing git history modal interactions.
- Created PreferencesAiPage for handling AI settings, including backend configuration and model selection.
- Developed PreferencesCredentialsPage for managing Git and cloud credentials.
- Added PreferencesPluginsPage for plugin management, including installation and sandbox settings.
- Introduced PreferencesVaultPage for vault key generation and management.
- Established PreferencesTabPage as a base class for shared functionality across preferences pages.

* refactor: simplify requireItemNode and related methods by removing unnecessary polling

* feat: implement flow and page registries for improved lazy loading of instances

* feat: refactor data handling and polling mechanisms for improved stability and performance

* feat: refactor flow management to use SessionContext for improved state handling

* refactor: read graphql root types via unique test ids

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* fix: use unique test ids for graphql explorer root types

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* refactor: drop pinned-request special case when rebuilding sidebar tree

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* refactor: update selection logic to use data-selected attribute for diff view and primitive selection

* refactor: replace NeDB file access with database queries for improved reliability

* refactor: update import paths to use absolute imports from @package

- Changed import statements across multiple files to use absolute paths from the @package alias instead of relative paths.
- This improves code readability and maintainability by standardizing the import structure.

* docs: add README for insomnia-test with E2E testing details

* refactor: update import paths for constants and fixtures in happy-path.spec.ts

* refactor: streamline file dialog stubbing across components and flows

* refactor: enhance GitHub Actions permissions and add artifact cleanup step

* refactor: simplify Playwright test execution and enhance coverage report handling

* ci(insomnia-test): print playwright --list output when test count cannot be determined

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* refactor: replace createSubEnvironment with addAndRenameSubEnvironment for improved clarity and functionality

* refactor(insomnia-test): organise ResponseView by response pane areas

Replace the AppResponse-derived fields with statusBar, preview, headers,
console, events and tests so assertions map to what the user sees.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* refactor(insomnia-test): use @package alias for cross-directory imports

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* style(insomnia-test): sort imports after switching to @package alias

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* refactor(insomnia-test): replace hardcoded IDs with constants in mock-api

* refactor(insomnia-test): update SKILL.md for improved clarity and consistency in framework facts

* refactor(insomnia-test): enhance listbox locator in SelectComponent and improve textarea selection in VariableSourcePage

* refactor(insomnia-test): update timeout handling in Tree class to use LONG_TIMEOUT for better reliability

* feat(insomnia-test): add resolving-proxy-server mock facility

Forward proxy on :4095 that maps insomnia.test to 127.0.0.1 (http directly,
https via CONNECT). Lets specs reach the local mock servers without using
`localhost`, which Insomnia treats as a secure context for Secure cookies.
Started automatically through playwright.config.ts webServer.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* refactor(insomnia-test): move cloud-sync-mock helper into misc

It wraps mock-api admin endpoints like the other shared helpers in misc/,
and tests/ should only hold specs.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* refactor(insomnia-test): update locators to use `Locator` type and improve dialog handling

* fix(insomnia-test): fix lint errors and warnings in page objects

Add a CommonJS override for plugin fixtures, drop force clicks and waitForTimeout from page objects, and avoid expect().catch().

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* refactor(insomnia-test): enhance editable name handling with retry logic for stability

* refactor(insomnia-test): update shard calculation to cap at MAX_SHARDS for better resource management

* refactor(insomnia-test): update parallel-test job description for clarity on shard usage

* refactor(insomnia-test): update timeout handling and constants for improved stability and resource management

* feat(tests): add various E2E tests for cloud sync and workspace functionalities

* feat(tests): add E2E tests for spectral lint error handling in JSON and YAML specs

* feat(tests): enhance spectral lint error tests with project node verification

* test(insomnia-test): move unused page objects, components and models to e2e-2

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* test(insomnia-test): keep only members referenced by e1 tests in components/enums/flows/models/pages

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* test(insomnia-test): drop empty flow/page classes and tidy blank lines

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* test(insomnia-test): move cloud-sync and document specs out of e2e-1 and prune unused code

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* test(insomnia-test): drop page registry entries, pages and members not used by e2e-1 specs

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* test(insomnia-test): drop non-HTTP request models and unions unused by e2e-1 specs

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* refactor: reorganize FlowContext imports and introduce SessionContext for shared state management

* fix: limit response delay to maximum threshold in delayResponse function

* chore: move write-insomnia-test skill to test/refactor_e2e_tests

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* chore: move insomnia-test README to test/refactor_e2e_tests

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* fix: add permissions for package access and improve dependency installation in shard matrix job

* fix: streamline delayResponse function to ensure valid delay handling

* refactor: simplify ContextMenuItem enum by removing comments and consolidating labels

* fix: remove baseUrl from tsconfig.json to streamline module resolution

* refactor(insomnia-test): prune misc code not used by e2e-1 tests

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* fix(insomnia-test): address review feedback on deps, coverage and video

- align dependency versions with the rest of the monorepo (express ^4,
  zod ^3, graphql ^16, @types/node ^24, @modelcontextprotocol/sdk ^1.17.5)
  and regenerate package-lock.json
- make CI coverage on-demand: always on for develop pushes, opt-in via the
  workflow_dispatch `coverage` input otherwise
- drop video recording (and the ffmpeg install); start Electron window
  tracing explicitly and attach trace.zip on failure instead

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* refactor(insomnia-test): replace the standalone mock servers with the smoke-test mock server

Remove the misc/*-server.ts scripts and their per-server webServer entries.
Run a single mock server (misc/server), copied from insomnia-smoke-test and
adapted to native-ESM node (import.meta.dirname, .ts imports, generated
certs, no cross-package imports).

Additions on top of the smoke server: misc/server/mock-api.ts (account and
session state, _admin hooks, Cloud Sync GraphQL, vault, collaborators; runs
as middleware and falls through), an httpbin-style /post, a catch-all 200 {}
and socket.io moved to :3000. HTTP_SERVER now points at the single server.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* refactor: replace hardcoded authorization header with dynamic base64 encoding

* fix(insomnia-test): address code-scanning alerts in the mock server

- send text/plain and JSON responses instead of reflecting user input as HTML
- use a constant format string when logging GraphQL operations
- rate limit the git routes that touch the file system
- document why the mTLS test server skips client cert rejection

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* fix(insomnia-test): bump express-rate-limit to drop vulnerable ip-address

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* refactor(insomnia-test): move shared tab panes and preferences dialog to components

Address review feedback: auth-tab, script-tab and tab-panel are reused by
several pages, and the Preferences dialog is reachable from any page, so
they belong in the component layer rather than pages.

- TabPanelPage -> TabPanelComponent (RequestPage now composes it)
- AuthTabComponent / ScriptTabComponent move to components/
- Preferences{,Tab,Credentials,Plugins,Ai}Page -> *Component, registered
  in PageManager under preferences / preferencesCredentials / ...

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* fix(insomnia-test): set response type to text/plain for delay endpoint

* chore(insomnia-test): remove unused fixture files

---------

Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-06 14:16:28 +08:00
..