Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion desktop/tests/e2e/agent-readiness-screenshots.spec.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { expect, test } from "@playwright/test";

import { SHARED_COMPUTE_LABEL } from "../../src/shared/constants/brand";
import { installMockBridge, TEST_IDENTITIES } from "../helpers/bridge";

const SHOTS = "test-results/agent-readiness";
Expand Down Expand Up @@ -160,7 +161,7 @@ test.describe("agent readiness gate screenshots", () => {
test("02-create-buzzagent-automatic-model", async ({ page }) => {
await installMockBridge(page);
await openCreateDialog(page);
await selectProvider(page, "Buzz shared compute");
await selectProvider(page, SHARED_COMPUTE_LABEL);

await expect(page.locator("#persona-model")).toContainText("Automatic");
await expect(page.getByTestId("persona-dialog-submit")).toBeEnabled();
Expand Down
3 changes: 2 additions & 1 deletion desktop/tests/e2e/buzz-theme-screenshots.spec.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { expect, test, type Page } from "@playwright/test";

import { PRODUCT_NAME } from "../../src/shared/constants/brand";
import { waitForAnimations } from "../helpers/animations";
import { installMockBridge } from "../helpers/bridge";

Expand Down Expand Up @@ -758,7 +759,7 @@ test("app font size and conversation density apply independently", async ({
await expect(comfortable).toHaveAttribute("aria-pressed", "true");
await expect(defaultSize).toHaveAttribute("aria-pressed", "true");
await expect(densityDescription).toHaveText(
"Spacing in conversations and Markdown content across Buzz",
`Spacing in conversations and Markdown content across ${PRODUCT_NAME}`,
);
await expect(fontSizeDescription).toHaveText(
"Applies across conversations and interface text",
Expand Down
11 changes: 8 additions & 3 deletions desktop/tests/e2e/deep-link-invite.spec.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { expect, test } from "@playwright/test";

import { PRODUCT_NAME } from "../../src/shared/constants/brand";
import { installMockBridge, TEST_IDENTITIES } from "../helpers/bridge";
import { seedActiveIdentity } from "../helpers/onboarding";

Expand Down Expand Up @@ -302,7 +303,9 @@ test("deleted public starter channels do not strand community onboarding", async
);
await page.goto("/");

await page.getByRole("button", { name: "Take me to Buzz" }).click();
await page
.getByRole("button", { name: `Take me to ${PRODUCT_NAME}` })
.click();

await expect(page.getByTestId("community-onboarding-flow")).toHaveCount(0);
await expect(page).toHaveURL(/#\/channels\/[^/]+$/);
Expand Down Expand Up @@ -357,12 +360,14 @@ test("required Welcome creation failure keeps community onboarding open", async
);
await page.goto("/");

await page.getByRole("button", { name: "Take me to Buzz" }).click();
await page
.getByRole("button", { name: `Take me to ${PRODUCT_NAME}` })
.click();

await expect(page.getByTestId("community-onboarding-flow")).toBeVisible();
await expect(page.getByText(`${welcomeError} Try again.`)).toBeVisible();
await expect(
page.getByRole("button", { name: "Take me to Buzz" }),
page.getByRole("button", { name: `Take me to ${PRODUCT_NAME}` }),
).toBeEnabled();
await expect(page.getByTestId("chat-title")).toHaveCount(0);
});
Expand Down
3 changes: 2 additions & 1 deletion desktop/tests/e2e/doctor-states.spec.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { expect, test } from "@playwright/test";

import { PRODUCT_NAME } from "../../src/shared/constants/brand";
import { installMockBridge } from "../helpers/bridge";
import { waitForAnimations } from "../helpers/animations";
import { openSettings } from "../helpers/settings";
Expand Down Expand Up @@ -828,7 +829,7 @@ test.describe("Doctor panel state screenshots", () => {
const dialog = page.getByRole("alertdialog");
await expect(dialog).toContainText("Update Codex adapter?");
await expect(dialog).toContainText(
"Older Buzz releases using the legacy adapter may lose community access",
`Older ${PRODUCT_NAME} releases using the legacy adapter may lose community access`,
);
await expect(page.getByTestId("doctor-runtime-loading-codex")).toHaveCount(
0,
Expand Down
4 changes: 3 additions & 1 deletion desktop/tests/e2e/entity-link-recipient-cards.spec.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import { expect, test } from "@playwright/test";

import { PRODUCT_NAME } from "@/shared/constants/brand";

import { waitForAnimations } from "../helpers/animations";
import {
installBridge,
Expand Down Expand Up @@ -399,7 +401,7 @@ test("entity tooltip uses project context while relay metadata is delayed", asyn
page
.getByRole("tooltip")
.locator('[data-buzz-tooltip-metadata-content=""]'),
).toHaveText("buzz · The complete Buzz community platform.");
).toHaveText(`buzz · The complete ${PRODUCT_NAME} community platform.`);
});

test("desktop composer and sent message keep Buzz entities chip-only", async ({
Expand Down
10 changes: 7 additions & 3 deletions desktop/tests/e2e/global-agent-config-screenshots.spec.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
import { expect, test } from "@playwright/test";

// The mock bridge's default catalog labels buzz-agent with the product name.
// The CATALOG_* fixtures below keep upstream's "Buzz Agent" label, so tests
// that inject one of them still expect that literal.
import { PRODUCT_NAME } from "../../src/shared/constants/brand";
import { waitForAnimations } from "../helpers/animations";
import { installMockBridge, TEST_IDENTITIES } from "../helpers/bridge";

Expand Down Expand Up @@ -569,7 +573,7 @@ test.describe("global agent config screenshots", () => {
);

const harness = defaultsDialog.getByTestId("global-agent-default-harness");
await expect(harness).toHaveText("Buzz Agent");
await expect(harness).toHaveText(`${PRODUCT_NAME} Agent`);
const provider = defaultsDialog.getByTestId("global-agent-provider");
await expect(provider).toBeVisible();
await waitForAnimations(page);
Expand Down Expand Up @@ -657,7 +661,7 @@ test.describe("global agent config screenshots", () => {
const defaultsDialog = page.getByTestId("agent-ai-defaults-dialog");
await expect(
defaultsDialog.getByTestId("global-agent-default-harness"),
).toHaveText("Buzz Agent");
).toHaveText(`${PRODUCT_NAME} Agent`);

await defaultsDialog.getByTestId("global-agent-provider").click();
await page.getByTestId("global-agent-provider-option-anthropic").click();
Expand Down Expand Up @@ -827,7 +831,7 @@ test.describe("global agent config screenshots", () => {
defaultsSection.getByText("Harness", { exact: true }),
).toBeVisible();
await expect(
defaultsSection.getByText("Buzz Agent", { exact: true }),
defaultsSection.getByText(`${PRODUCT_NAME} Agent`, { exact: true }),
).toBeVisible();

// Global provider satisfies the provider-default rule → submit enabled.
Expand Down
5 changes: 3 additions & 2 deletions desktop/tests/e2e/identity-lost.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { hexToBytes } from "@noble/hashes/utils.js";
import { expect, test } from "@playwright/test";
import { nsecEncode } from "nostr-tools/nip19";

import { PRODUCT_NAME } from "../../src/shared/constants/brand";
import { installMockBridge, TEST_IDENTITIES } from "../helpers/bridge";

test("normal first launch uses the already-persisted identity", async ({
Expand Down Expand Up @@ -111,7 +112,7 @@ test("lost boot offers phone recovery with a single-use QR", async ({
await expect(page.getByTestId("identity-recovery-pairing")).toBeVisible();
await expect(page.getByTestId("identity-recovery-qr")).toBeVisible();
await expect(
page.getByText("Scan this code with a signed-in Buzz phone."),
page.getByText(`Scan this code with a signed-in ${PRODUCT_NAME} phone.`),
).toBeVisible();
await expect(
page.getByText("On your phone, open Settings → Send identity to desktop."),
Expand Down Expand Up @@ -201,7 +202,7 @@ test("phone recovery uses the desktop pairing card semantics", async ({
).toBeVisible();
await expect(
card.getByText(
"This gives this desktop permanent access to your Buzz identity. Only continue if you trust it.",
`This gives this desktop permanent access to your ${PRODUCT_NAME} identity. Only continue if you trust it.`,
),
).toBeVisible();
await expect(
Expand Down
5 changes: 3 additions & 2 deletions desktop/tests/e2e/mesh-compute.spec.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { expect, test } from "@playwright/test";

import { PRODUCT_NAME } from "../../src/shared/constants/brand";
import { installMockBridge } from "../helpers/bridge";
import { openSettings } from "../helpers/settings";

Expand Down Expand Up @@ -47,7 +48,7 @@ test("Share compute chooses a model before sharing", async ({ page }) => {
).toBeVisible();
await expect(model).toBeVisible();
await expect(card).toContainText(
"Buzz downloads remote models when sharing starts",
`${PRODUCT_NAME} downloads remote models when sharing starts`,
);
await expect(toggle).toBeChecked();
await expect(
Expand Down Expand Up @@ -121,7 +122,7 @@ test("a consuming client can switch to sharing its saved local model", async ({
await expect(card).toContainText(
"This machine is currently using another member's shared compute",
);
await expect(card).toContainText("Buzz may briefly restart");
await expect(card).toContainText(`${PRODUCT_NAME} may briefly restart`);
await expect(toggle).not.toBeChecked();
await expect(
page.getByTestId("mesh-share-compute-options-motion"),
Expand Down
3 changes: 2 additions & 1 deletion desktop/tests/e2e/needs-restart-screenshots.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@

import { expect, test } from "@playwright/test";

import { PRODUCT_NAME } from "../../src/shared/constants/brand";
import { installMockBridge, TEST_IDENTITIES } from "../helpers/bridge";
import { waitForAnimations } from "../helpers/animations";

Expand Down Expand Up @@ -428,7 +429,7 @@ test.describe("restart-diff screenshots", () => {
const banner = panel.getByTestId("needs-restart-banner");
await expect(banner).toBeVisible({ timeout: 10_000 });
await expect(
banner.getByText("Buzz can restart it automatically"),
banner.getByText(`${PRODUCT_NAME} can restart it automatically`),
).toBeVisible();

await waitForAnimations(page);
Expand Down
3 changes: 2 additions & 1 deletion desktop/tests/e2e/nostr-bind.spec.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { expect, test, type Locator, type Page } from "@playwright/test";
import { PRODUCT_NAME } from "../../src/shared/constants/brand";
import { installMockBridge } from "../helpers/bridge";

type NostrBindPayload = {
Expand Down Expand Up @@ -459,7 +460,7 @@ test("keeps the signed response available when clipboard access fails", async ({
await expect(
page
.getByTestId("nostr-bind-manual-fallback-content")
.getByText("Buzz couldn't access the clipboard. Try again."),
.getByText(`${PRODUCT_NAME} couldn't access the clipboard. Try again.`),
).toBeVisible();
await expect(page.getByTestId("nostr-bind-signed-response")).toContainText(
"e2e-signed-nostr-binding",
Expand Down
7 changes: 4 additions & 3 deletions desktop/tests/e2e/onboarding-agent-defaults.spec.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { expect, test } from "@playwright/test";
import { PRODUCT_NAME } from "@/shared/constants/brand";
import { installMockBridge } from "../helpers/bridge";
import { passThroughBackupStep } from "../helpers/onboarding";

Expand Down Expand Up @@ -691,7 +692,7 @@ test("Back preserves incomplete defaults draft without writing", async ({
.getByTestId("onboarding-page-config")
.locator(".buzz-onboarding-transition-line"),
).toHaveAttribute("data-onboarding-direction", "forward");
await expect(harness).toHaveText("Buzz");
await expect(harness).toHaveText(PRODUCT_NAME);
await expect(page.getByTestId("global-agent-provider")).toHaveText(
"Anthropic",
);
Expand Down Expand Up @@ -1101,7 +1102,7 @@ test("Finish stays disabled until a provider-required harness is fully configure
// buzz-agent auto-selects as the only ready harness, but with no provider
// configured the default is not launchable — Finish must be gated.
await expect(page.getByTestId("global-agent-default-harness")).toHaveText(
"Buzz",
PRODUCT_NAME,
);
const finish = page.getByTestId("onboarding-finish");
await expect(finish).toBeDisabled();
Expand Down Expand Up @@ -1152,7 +1153,7 @@ test("baked build config keeps Finish enabled without manual provider setup", as
// Internal builds bake provider/model/credentials — the gate must treat
// baked config as complete and never block Finish.
await expect(page.getByTestId("global-agent-default-harness")).toHaveText(
"Buzz",
PRODUCT_NAME,
);
await expect(page.getByTestId("onboarding-finish")).toBeEnabled();
});
28 changes: 17 additions & 11 deletions desktop/tests/e2e/onboarding.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ import { hexToBytes } from "@noble/hashes/utils.js";
import { expect, test, type Page } from "@playwright/test";
import { nsecEncode } from "nostr-tools/nip19";

import { PRODUCT_NAME } from "@/shared/constants/brand";

import {
installMockBridge,
openChannelBrowser,
Expand Down Expand Up @@ -689,7 +691,7 @@ test("fresh existing-identity path leads with private-key recovery", async ({
page.getByRole("heading", { name: "Enter your private key" }),
).toBeVisible();
await expect(
page.getByText("Paste your private key to sign in to Buzz."),
page.getByText(`Paste your private key to sign in to ${PRODUCT_NAME}.`),
).toBeVisible();
await expect(page.getByTestId("nostr-import-card")).toBeVisible();
await expect(page.getByTestId("nostr-import-file-button")).toHaveText(
Expand Down Expand Up @@ -762,7 +764,9 @@ test("fresh existing-identity path leads with private-key recovery", async ({
const phoneDialog = page.getByTestId("phone-recovery-dialog");
await expect(phoneDialog).toBeVisible();
await expect(
phoneDialog.getByRole("heading", { name: "Use your Buzz identity" }),
phoneDialog.getByRole("heading", {
name: `Use your ${PRODUCT_NAME} identity`,
}),
).toBeVisible();
await expect(phoneDialog.getByTestId("identity-recovery-qr")).toBeVisible();
await expect(page.getByTestId("nostr-import-card")).toBeVisible();
Expand Down Expand Up @@ -1237,7 +1241,7 @@ test("first-community owner can create and connect a hosted community", async ({
await page.getByTestId("community-choice-create").click();
await page.getByRole("button", { name: "Sign in to continue" }).click();
await expect(
page.getByRole("heading", { name: "Finish connecting Buzz" }),
page.getByRole("heading", { name: `Finish connecting ${PRODUCT_NAME}` }),
).toBeVisible();
await page.getByRole("button", { name: "Connect and continue" }).click();
const createSurface = page.getByTestId("hosted-community-create-surface");
Expand Down Expand Up @@ -1313,7 +1317,7 @@ test("hosted community address line stays within the card for a long name", asyn
await page.getByTestId("community-choice-create").click();
await page.getByRole("button", { name: "Sign in to continue" }).click();
await expect(
page.getByRole("heading", { name: "Finish connecting Buzz" }),
page.getByRole("heading", { name: `Finish connecting ${PRODUCT_NAME}` }),
).toBeVisible();
await page.getByRole("button", { name: "Connect and continue" }).click();

Expand Down Expand Up @@ -1455,7 +1459,7 @@ test("first-community owner can replace a mismatched account identity", async ({
await page.getByTestId("community-choice-create").click();
await expect(
page.getByRole("heading", {
name: "This account uses a different Buzz identity",
name: `This account uses a different ${PRODUCT_NAME} identity`,
}),
).toBeVisible();
await page
Expand Down Expand Up @@ -1508,11 +1512,11 @@ test("first-community explains when the local identity belongs to another accoun
.click();
await expect(
page.getByText(
"This device's Buzz identity belongs to a different Builderlab account and can't be moved from here. Sign out, then sign in with the account that already owns this identity.",
`This device's ${PRODUCT_NAME} identity belongs to a different Builderlab account and can't be moved from here. Sign out, then sign in with the account that already owns this identity.`,
),
).toBeVisible();
await expect(
page.getByRole("heading", { name: "Finish connecting Buzz" }),
page.getByRole("heading", { name: `Finish connecting ${PRODUCT_NAME}` }),
).toBeVisible();
});

Expand Down Expand Up @@ -3203,13 +3207,13 @@ test("first-run onboarding posts the live Fizz kickoff", async ({ page }) => {
"offline",
]);
await expect(page.getByTestId("message-timeline")).not.toContainText(
"Hi Morty QA, I'm Fizz. Welcome to Buzz.",
`Hi Morty QA, I'm Fizz. Welcome to ${PRODUCT_NAME}.`,
);
await publishWelcomeTeamPresence(page);
// Greeted by the name typed above — the @mention pill also files the opener
// into the new user's Inbox mentions feed.
await expect(page.getByTestId("message-timeline")).toContainText(
"Hi Morty QA, I'm Fizz. Welcome to Buzz.",
`Hi Morty QA, I'm Fizz. Welcome to ${PRODUCT_NAME}.`,
);
await expect(page.getByTestId("message-timeline")).toContainText(
"Honey and Pollen, introduce yourselves",
Expand All @@ -3234,7 +3238,7 @@ test("first-run onboarding lands before Welcome team bootstrap completes", async
await expect(page.getByTestId("app-loading-gate")).toHaveCount(0);
await publishWelcomeTeamPresence(page);
await expect(page.getByTestId("message-timeline")).toContainText(
"Hi Morty QA, I'm Fizz. Welcome to Buzz.",
`Hi Morty QA, I'm Fizz. Welcome to ${PRODUCT_NAME}.`,
);
await page.waitForTimeout(1_500);
expect(await commandCount(page, "create_managed_agent")).toBe(3);
Expand Down Expand Up @@ -4100,7 +4104,9 @@ test("denied on relay A then paste relay B invite URL switches community to B",
await expect(page.getByText("I am 18 years of age or older.")).toBeVisible();
await page.getByLabel("I am 18 years of age or older.").check();
await page
.getByLabel("I agree to the Buzz Terms of Service and Privacy Policy.")
.getByLabel(
`I agree to the ${PRODUCT_NAME} Terms of Service and Privacy Policy.`,
)
.check();
await page.getByTestId("invite-redeem-submit").click();

Expand Down
4 changes: 3 additions & 1 deletion desktop/tests/e2e/persona-env-vars.spec.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import { expect, test } from "@playwright/test";

import { PRODUCT_NAME } from "@/shared/constants/brand";

import { waitForAnimations } from "../helpers/animations";
import { installMockBridge } from "../helpers/bridge";

Expand Down Expand Up @@ -319,7 +321,7 @@ test("persona model options follow the selected LLM provider", async ({
await page.getByRole("tab", { name: "Customize for this agent" }).click();
const llmProvider = page.locator("#persona-llm-provider");
const model = page.locator("#persona-model");
await expect(provider).toContainText("Buzz Agent (default)");
await expect(provider).toContainText(`${PRODUCT_NAME} Agent (default)`);
await expect(llmProvider).toBeVisible();
await expect(model).toBeVisible();
// Custom mode requires a model selection until a provider is chosen.
Expand Down
Loading