diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 76bb1325e..d63657b1d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -138,6 +138,7 @@ jobs: matrix: test-file: - ./test/cassandra/container.spec.ts + - ./test/graph/container.spec.ts - ./test/sql/container.spec.ts - ./test/mongo/container.spec.ts - ./test/selfServe/selfServeExample.spec.ts diff --git a/package.json b/package.json index 4ca769a57..8a6d354f1 100644 --- a/package.json +++ b/package.json @@ -191,7 +191,7 @@ "pack:fast": "node --max_old_space_size=10196 ./node_modules/webpack/bin/webpack.js --mode development --progress", "copyToConsumers": "node copyToConsumers", "test": "rimraf coverage && jest", - "test:e2e": "jest -c ./jest.config.e2e.js --detectOpenHandles", + "test:e2e": "jest -c ./jest.config.playwright.js --detectOpenHandles", "watch": "npm run start", "wait-for-server": "wait-on -t 240000 -i 5000 -v https-get://0.0.0.0:1234/", "build:ase": "gulp build:ase", diff --git a/test/graph/container.spec.ts b/test/graph/container.spec.ts new file mode 100644 index 000000000..d5ee55e1e --- /dev/null +++ b/test/graph/container.spec.ts @@ -0,0 +1,37 @@ +import { jest } from "@jest/globals"; +import "expect-playwright"; +import { safeClick } from "../utils/safeClick"; +import { generateDatabaseNameWithTimestamp, generateUniqueName } from "../utils/shared"; +jest.setTimeout(240000); + +test("Graph CRUD", async () => { + const databaseId = generateDatabaseNameWithTimestamp(); + const containerId = generateUniqueName("container"); + + await page.goto("https://localhost:1234/testExplorer.html?accountName=portal-gremlin-runner"); + await page.waitForSelector("iframe"); + const explorer = page.frame({ + name: "explorer", + }); + + // Create new database and graph + await explorer.click('[data-test="New Graph"]'); + await explorer.fill('[aria-label="New database id"]', databaseId); + await explorer.fill('[aria-label="Graph id"]', containerId); + await explorer.fill('[aria-label="Partition key"]', "/pk"); + await explorer.click("#sidePanelOkButton"); + await safeClick(explorer, `.nodeItem >> text=${databaseId}`); + await safeClick(explorer, `.nodeItem >> text=${containerId}`); + // Delete database and graph + await safeClick(explorer, `[data-test="${containerId}"] [aria-label="More"]`); + await safeClick(explorer, 'button[role="menuitem"]:has-text("Delete Graph")'); + await explorer.fill('text=* Confirm by typing the graph id >> input[type="text"]', containerId); + await explorer.click('[aria-label="Submit"]'); + await explorer.click(`[data-test="${databaseId}"] [aria-label="More"]`); + await explorer.click('button[role="menuitem"]:has-text("Delete Database")'); + await explorer.click('text=* Confirm by typing the database id >> input[type="text"]'); + await explorer.fill('text=* Confirm by typing the database id >> input[type="text"]', databaseId); + await explorer.click("#sidePanelOkButton"); + await expect(explorer).not.toHaveText(".dataResourceTree", databaseId); + await expect(explorer).not.toHaveText(".dataResourceTree", containerId); +});