Skip to content

Commit ba4f0c9

Browse files
authored
Fix flaky e2e test tutorial-1 (#6362)
* change date set * update loader margin * update branch generator to avoid undefined in the string * update merge test * add random branches * delete branch after test * set to 2 workers * remove test id for cypress * update test to ensure the alert visibility
1 parent 4853eb8 commit ba4f0c9

File tree

8 files changed

+26
-13
lines changed

8 files changed

+26
-13
lines changed

frontend/app/playwright.config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ export default defineConfig({
2626
toHaveScreenshot: { maxDiffPixels: 5000 },
2727
},
2828
/* Opt out of parallel tests on CI. */
29-
workers: process.env.CI ? 3 : undefined,
29+
workers: process.env.CI ? 2 : undefined,
3030
/* Reporter to use. See https://playwright.dev/docs/test-reporters */
3131
reporter: [
3232
["list"],

frontend/app/src/shared/components/buttons/button.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ export const Button = forwardRef((props: ButtonProps, ref: any) => {
109109
onClick={handleClick}
110110
disabled={isLoading ? true : propsToPass.disabled}
111111
>
112-
{isLoading ? <Spinner className="mr-2" /> : children}
112+
{isLoading ? <Spinner className="mx-2" /> : children}
113113
</button>
114114
);
115115
});

frontend/app/src/shared/components/ui/form.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ export const FormSubmit = React.forwardRef<HTMLButtonElement, ButtonProps>(
150150
const isLoading = formState.isSubmitting || formState.isValidating;
151151

152152
return (
153-
<Button ref={ref} disabled={isLoading} {...props} type="submit" data-cy="submit-form">
153+
<Button ref={ref} disabled={isLoading} {...props} type="submit">
154154
<span className={classNames(isLoading && "invisible")}>{children}</span>
155155
{isLoading && <Spinner className="absolute" />}
156156
</Button>

frontend/app/tests/e2e/branches/merge-branch.spec.ts

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,34 @@
11
import { expect, test } from "@playwright/test";
22
import { ACCOUNT_STATE_PATH } from "../../constants";
3+
import { generateRandomBranchName } from "../../utils";
4+
import { deleteBranchAPI } from "../utils/graphql";
35

46
test.describe("Verify branch merge button state", () => {
57
test.use({ storageState: ACCOUNT_STATE_PATH.ADMIN });
68

9+
const BRANCH_NAME = generateRandomBranchName("merge-action-test");
10+
11+
test.afterAll(async ({ request }) => {
12+
await deleteBranchAPI(request, BRANCH_NAME);
13+
});
14+
715
test("create a branch, merge it and verify button state", async ({ page }) => {
816
await test.step("Create and access a new branch", async () => {
917
await page.goto("/branches");
1018
await page.getByTestId("branch-selector-trigger").click();
1119
await page.getByTestId("create-branch-button").click();
12-
await page.getByRole("textbox", { name: "New branch name *" }).fill("merge-action-test");
20+
await page.getByRole("textbox", { name: "New branch name *" }).fill(BRANCH_NAME);
1321
await page.getByRole("button", { name: "Create a new branch" }).click();
1422
await expect(page.getByText("New branch name *")).not.toBeVisible();
15-
await expect(page.getByTestId("branches-items").getByText("merge-action-test")).toBeVisible();
16-
await page.getByTestId("branches-items").getByText("merge-action-test").click();
17-
await expect(page.getByText("Namemerge-action-test")).toBeVisible();
23+
await expect(page.getByTestId("branches-items").getByText(BRANCH_NAME)).toBeVisible();
24+
await page.getByTestId("branches-items").getByText(BRANCH_NAME).click();
25+
await expect(page.getByText(`Name${BRANCH_NAME}`)).toBeVisible();
1826
await page.getByText("Tasks").click();
1927
});
2028

2129
await test.step("Merge the branch and verify button state", async () => {
30+
test.slow();
31+
2232
await page.getByRole("button", { name: "Merge", exact: true }).click();
2333
await expect(page.getByText("Branch merge requested!")).toBeVisible();
2434
await expect(page.getByText("RUNNINGMerge branch graphQL")).toBeVisible();

frontend/app/tests/e2e/docs-regression-check/tutorials/tutorial-1_object-create-update-diff-and-merge.spec.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,14 @@ test.describe("Getting started with Infrahub - Object and branch creation, updat
1111
let dateBeforeTest: Date;
1212

1313
test("1. Create a new organization", async ({ page }) => {
14-
dateBeforeTest = new Date();
15-
1614
await page.goto("/");
1715

1816
await page.getByTestId("sidebar").getByRole("button", { name: "Organization" }).click();
1917
await page.getByRole("menuitem", { name: "Tenant" }).click();
2018
await expect(page.getByRole("link", { name: "Duff" })).toBeVisible();
2119

20+
dateBeforeTest = new Date();
21+
2222
await test.step("fill and submit form for new organization", async () => {
2323
await page.getByTestId("create-object-button").click();
2424

frontend/app/tests/e2e/docs-regression-check/tutorials/tutorial-2_data-lineage-and-metadata.spec.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ test.describe("Getting started with Infrahub - Data lineage and metadata", () =>
3535
await saveScreenshotForDocs(page, "tutorial_4_metadata_edit");
3636
await page.getByRole("button", { name: "Save" }).click();
3737

38+
await expect(page.getByText("Metadata updated")).toBeVisible();
39+
3840
await page.getByText("Description-").getByTestId("view-metadata-button").click();
3941

4042
await expect(page.getByText("Is protectedTrue")).toBeVisible();

frontend/app/tests/e2e/proposed-changes/proposed-changes.spec.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { expect, test } from "@playwright/test";
22
import { ACCOUNT_STATE_PATH } from "../../constants";
3+
import { generateRandomBranchName } from "../../utils";
34
import { createBranchAPI, deleteBranchAPI } from "../utils/graphql";
45

56
test.describe("/proposed-changes", () => {
@@ -46,9 +47,9 @@ test.describe("/proposed-changes", () => {
4647
test.describe("Create, edit and merge proposed change", async () => {
4748
test.describe.configure({ mode: "serial" });
4849

49-
const pcName = "pc-e2e";
50-
const pcNameEdit = "pc-e2e-edit";
51-
const pcBranchName = "main-copy-for-pc-e2e";
50+
const pcName = generateRandomBranchName("pc-e2e");
51+
const pcNameEdit = generateRandomBranchName("pc-e2e-edit");
52+
const pcBranchName = generateRandomBranchName("main-copy-for-pc-e2e");
5253

5354
test.beforeAll(async ({ request }) => {
5455
await createBranchAPI(request, pcBranchName);

frontend/app/tests/utils.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,5 @@ export const deleteBranch = async (page: Page, branchName: string) => {
2525
};
2626

2727
export const generateRandomBranchName = (prefix?: string) => {
28-
return `${prefix}${Math.random().toString(36).substring(2, 15)}`;
28+
return `${prefix ?? ""}${Math.random().toString(36).substring(2, 15)}`;
2929
};

0 commit comments

Comments
 (0)