From cfb05a3c3000d8d8ae787495f6f2bbd2f7fd0702 Mon Sep 17 00:00:00 2001 From: Bob Qiu Date: Wed, 4 Nov 2026 10:45:06 +0800 Subject: [PATCH] test(insomnia-test): align 2-http-cookie-env with pruned e2e-1 base Co-Authored-By: Claude Sonnet 5.5 --- .../preferences-credentials.component.ts | 22 +++++++++++++++++++ packages/insomnia-test/flows/flow-manager.ts | 1 + .../insomnia-test/flows/mcp-client.flow.ts | 2 +- .../insomnia-test/flows/workspace.flow.ts | 17 ++++++++++++++ .../pages/cloud-sync-file-delete.page.ts | 8 +------ .../pages/cloud-sync-history-dialog.page.ts | 11 ++++------ .../insomnia-test/pages/cloud-sync.page.ts | 7 ------ .../insomnia-test/pages/grpc-request.page.ts | 4 ++-- packages/insomnia-test/pages/spec.page.ts | 12 ++++------ 9 files changed, 52 insertions(+), 32 deletions(-) diff --git a/packages/insomnia-test/components/preferences-credentials.component.ts b/packages/insomnia-test/components/preferences-credentials.component.ts index 1c13b1c194..0da4083da1 100644 --- a/packages/insomnia-test/components/preferences-credentials.component.ts +++ b/packages/insomnia-test/components/preferences-credentials.component.ts @@ -61,6 +61,28 @@ export class PreferencesCredentialsComponent extends PreferencesTabComponent { await modal.waitForHidden(); } + /** + * Adds a custom (username/PAT) Git credential from the Credentials tab, + * which must already be open (see `openCredentialsTab()`). + */ + async addCustomCredential(credential: GitCredential): Promise { + const modal = this.page.getByRole("dialog", { + name: /Access Token Credential/, + }); + await this.dialog + .getByRole("button", { name: "Create Git Credential" }) + .click(); + await this.page + .getByRole("menuitem", { name: "Access Token", exact: true }) + .click(); + await this.page.getByLabel("Author Email").fill(credential.authorEmail); + await this.page.getByLabel("Author Name").fill(credential.authorName); + await this.page.getByLabel("Username").fill(credential.username); + await this.page.getByLabel("Git Access Token").fill(credential.password); + await this.page.getByRole("button", { name: "Save Credential" }).click(); + await expect(modal).toBeHidden({ timeout: DEFAULT_TIMEOUT }); + } + /** * Adds an AWS cloud (vault) credential from the Credentials tab's * "Service Provider Credential List", which must already be open (see diff --git a/packages/insomnia-test/flows/flow-manager.ts b/packages/insomnia-test/flows/flow-manager.ts index 6d68964680..1def5bdc76 100644 --- a/packages/insomnia-test/flows/flow-manager.ts +++ b/packages/insomnia-test/flows/flow-manager.ts @@ -8,6 +8,7 @@ import { CookieFlow } from "./cookie.flow"; import { EnvironmentFlow } from "./environment.flow"; import { EventStreamRequestFlow } from "./event-stream-request.flow"; import { ExportFlow } from "./export.flow"; +import type { FlowContext } from "./flow-context"; import { FolderFlow } from "./folder.flow"; import { GitSyncFlow } from "./git-sync.flow"; import { GraphQLRequestFlow } from "./graphql-request.flow"; diff --git a/packages/insomnia-test/flows/mcp-client.flow.ts b/packages/insomnia-test/flows/mcp-client.flow.ts index f7f5a8b41c..b1e153ce54 100644 --- a/packages/insomnia-test/flows/mcp-client.flow.ts +++ b/packages/insomnia-test/flows/mcp-client.flow.ts @@ -1,7 +1,6 @@ import type { OAuth2Tokens } from "@package/components/auth-tab.component"; import { type McpCapabilityType, McpListAction } from "@package/enums/mcp-capability"; import { DEFAULT_TIMEOUT } from "@package/misc/constants"; -import type { FlowContext } from "@package/misc/flow-context"; import { step } from "@package/misc/step"; import { McpClient } from "@package/models/mcp-client"; import type { Project } from "@package/models/project"; @@ -11,6 +10,7 @@ import type { PageManager } from "@package/pages/page-manager"; import { expect } from "@playwright/test"; import { BaseFlow } from "./base.flow"; +import type { FlowContext } from "./flow-context"; import type { WorkspaceFlow } from "./workspace.flow"; export class McpClientFlow extends BaseFlow { diff --git a/packages/insomnia-test/flows/workspace.flow.ts b/packages/insomnia-test/flows/workspace.flow.ts index 0af4e72539..1c8ae17e31 100644 --- a/packages/insomnia-test/flows/workspace.flow.ts +++ b/packages/insomnia-test/flows/workspace.flow.ts @@ -71,6 +71,23 @@ export interface UnitTestRunResult { rows: UnitTestResultRow[]; } +export type WorkspaceItem = + | (Project & { kind: 'project' }) + | (Collection & { kind: 'collection' }) + | (McpClient & { kind: 'mcpClient' }) + | (HttpRequest & { kind: 'http' }) + | (GraphQLRequest & { kind: 'graphql' }) + | (GrpcRequest & { kind: 'grpc' }) + | (EventStreamRequest & { kind: 'eventStream' }) + | (SocketIORequest & { kind: 'socketIO' }) + | (WebSocketRequest & { kind: 'webSocket' }); + +/** The settled outcome of `WorkspaceFlow.runAllTests()`. */ +export interface UnitTestRunResult { + summary: string; + rows: UnitTestResultRow[]; +} + export class WorkspaceFlow extends BaseFlow { constructor( context: FlowContext, diff --git a/packages/insomnia-test/pages/cloud-sync-file-delete.page.ts b/packages/insomnia-test/pages/cloud-sync-file-delete.page.ts index de0ccb6c3b..eb70a429b4 100644 --- a/packages/insomnia-test/pages/cloud-sync-file-delete.page.ts +++ b/packages/insomnia-test/pages/cloud-sync-file-delete.page.ts @@ -75,15 +75,9 @@ export class CloudSyncFileDeletePage extends BasePage { * backend. */ async deleteWorkspacePermanently(): Promise { - // The radio's sits under its card