* 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>
31 lines
1.5 KiB
TypeScript
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();
|
|
});
|