evOo-local/apps/web/e2e/github-connect.spec.ts
cynarAI 3469165c92
Connect GitHub from a token alone (#195)
* Connect GitHub from a token alone, without a vendor account

Integrations only reached GitHub through Composio or Pipedream, which a
self-hosted instance does not have. A built-in GitHub row now opens
GitHub's prefilled token form, and the pasted token connects GitHub's
own MCP server through the existing installed-connector path. Web and
mobile.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Tgvrj34NMnaqvtgvruYQZZ

* Sync web catalogs for the GitHub connect strings

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Tgvrj34NMnaqvtgvruYQZZ

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-10-10 13:18:44 +02:00

31 lines
1.5 KiB
TypeScript

import { expect, test } from "@playwright/test";
import { captureScreenshot, completeOnboarding, openUserSettings, signup } from "./helpers";
test("GitHub connects from a token alone and disconnects again", async ({ page }, testInfo) => {
const stamp = Date.now();
await signup(page, `github-connect-${stamp}@rakazo.test`, "password12", "GitHub Connect");
await completeOnboarding(page);
await openUserSettings(page, "integrations");
const github = page.getByTestId("github-connect");
await expect(github).toBeVisible();
await github.getByRole("button", { name: "Connect", exact: true }).click();
await expect(github.getByRole("link", { name: "Create token on GitHub" })).toHaveAttribute(
"href",
/^https:\/\/github\.com\/settings\/tokens\/new\?description=evOo&scopes=repo/,
);
const token = github.getByLabel("GitHub token");
await token.fill("fake-github-token-value");
await captureScreenshot(page, testInfo, "github-connect");
await token.press("Enter");
await expect(github.getByText("Connected", { exact: true })).toBeVisible({ timeout: 30_000 });
await expect(token).toBeHidden();
await captureScreenshot(page, testInfo, "github-connected");
await page.reload({ waitUntil: "domcontentloaded" });
await openUserSettings(page, "integrations");
await expect(github.getByText("Connected", { exact: true })).toBeVisible({ timeout: 30_000 });
await github.getByRole("button", { name: "Disconnect" }).click();
await expect(github.getByRole("button", { name: "Connect", exact: true })).toBeVisible();
});