From b1ccff54029617fff6203a1476494b32e41dd232 Mon Sep 17 00:00:00 2001 From: l3d00m Date: Tue, 20 Aug 2024 16:54:42 +0000 Subject: [PATCH] first basic e2e test for reims --- .gitignore | 1 + .pnp.cjs | 11 +++++++ ...otenv-npm-16.4.5-bcb20eb95d-55a3134601.zip | Bin 0 -> 28775 bytes e2e/example.spec.ts | 18 ----------- e2e/find.spec.ts | 30 ++++++++++++++++++ e2e/login.setup.ts | 17 ++++++++++ package.json | 1 + playwright.config.ts | 30 ++++++++++++------ yarn.lock | 8 +++++ 9 files changed, 89 insertions(+), 27 deletions(-) create mode 100644 .yarn/cache/dotenv-npm-16.4.5-bcb20eb95d-55a3134601.zip delete mode 100644 e2e/example.spec.ts create mode 100644 e2e/find.spec.ts create mode 100644 e2e/login.setup.ts diff --git a/.gitignore b/.gitignore index c04f4a24..972d4843 100644 --- a/.gitignore +++ b/.gitignore @@ -106,3 +106,4 @@ sw.* /playwright-report/ /blob-report/ /playwright/.cache/ +.auth/ diff --git a/.pnp.cjs b/.pnp.cjs index 33c9d076..4ed27fa5 100755 --- a/.pnp.cjs +++ b/.pnp.cjs @@ -44,6 +44,7 @@ const RAW_RUNTIME_STATE = ["@vueuse/core", "npm:10.11.1"],\ ["axios", "npm:1.7.4"],\ ["dayjs", "npm:1.11.12"],\ + ["dotenv", "npm:16.4.5"],\ ["eslint", "npm:8.57.0"],\ ["eslint-config-prettier", "virtual:f38e57d791791749fcbabd309fca608b4b94dece2d82ce843f1a41fa3116db596a20c099e6de2af31c105fe4ac076cf46376e7075977c7d2a35411de7ab0cc23#npm:9.1.0"],\ ["eslint-config-standard", "virtual:f38e57d791791749fcbabd309fca608b4b94dece2d82ce843f1a41fa3116db596a20c099e6de2af31c105fe4ac076cf46376e7075977c7d2a35411de7ab0cc23#npm:17.1.0"],\ @@ -6134,6 +6135,15 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["dotenv", [\ + ["npm:16.4.5", {\ + "packageLocation": "./.yarn/cache/dotenv-npm-16.4.5-bcb20eb95d-55a3134601.zip/node_modules/dotenv/",\ + "packageDependencies": [\ + ["dotenv", "npm:16.4.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["eastasianwidth", [\ ["npm:0.2.0", {\ "packageLocation": "./.yarn/cache/eastasianwidth-npm-0.2.0-c37eb16bd1-9b1d3e1bae.zip/node_modules/eastasianwidth/",\ @@ -9661,6 +9671,7 @@ const RAW_RUNTIME_STATE = ["@vueuse/core", "npm:10.11.1"],\ ["axios", "npm:1.7.4"],\ ["dayjs", "npm:1.11.12"],\ + ["dotenv", "npm:16.4.5"],\ ["eslint", "npm:8.57.0"],\ ["eslint-config-prettier", "virtual:f38e57d791791749fcbabd309fca608b4b94dece2d82ce843f1a41fa3116db596a20c099e6de2af31c105fe4ac076cf46376e7075977c7d2a35411de7ab0cc23#npm:9.1.0"],\ ["eslint-config-standard", "virtual:f38e57d791791749fcbabd309fca608b4b94dece2d82ce843f1a41fa3116db596a20c099e6de2af31c105fe4ac076cf46376e7075977c7d2a35411de7ab0cc23#npm:17.1.0"],\ diff --git a/.yarn/cache/dotenv-npm-16.4.5-bcb20eb95d-55a3134601.zip b/.yarn/cache/dotenv-npm-16.4.5-bcb20eb95d-55a3134601.zip new file mode 100644 index 0000000000000000000000000000000000000000..37a9baf4b274502a56348d2f3b8d74895866fd7c GIT binary patch literal 28775 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 { - await page.goto('https://playwright.dev/') - - // Expect a title "to contain" a substring. - await expect(page).toHaveTitle(/Playwright/) -}) - -test('get started link', async ({ page }) => { - await page.goto('https://playwright.dev/') - - // Click the get started link. - await page.getByRole('link', { name: 'Get started' }).click() - - // Expects page to have a heading with the name of Installation. - await expect(page.getByRole('heading', { name: 'Installation' })).toBeVisible() -}) diff --git a/e2e/find.spec.ts b/e2e/find.spec.ts new file mode 100644 index 00000000..c66cba6b --- /dev/null +++ b/e2e/find.spec.ts @@ -0,0 +1,30 @@ +import { test, expect } from '@playwright/test' + +test('test', async ({ page }) => { + await page.goto('https://reims2.app/find') + await page.getByLabel('Category').fill('m') + await page.getByLabel('Category').press('Enter') + + await page.getByLabel('Sphere').first().fill('1.2') + await page.getByLabel('Sphere').first().press('Enter') + await expect(page.getByLabel('Sphere').first()).toHaveValue('1.25') + + await page.getByLabel('Cylinder').first().fill('1.7') + + await page.getByLabel('Axis').first().fill('001') + + await page.getByLabel('Additional').first().fill('1') + await page.getByLabel('Additional').first().press('Enter') + await expect(page.getByLabel('Additional').first()).toHaveValue('1.00') + await expect(page.getByLabel('Additional').nth(1)).toHaveValue('1.00') + + await page.locator('#input-30').fill('2.0') + + await page.locator('#input-32').fill('1.5') + + await page.locator('#input-34').fill('002') + + await page.locator('#input-36').press('Enter') + + await expect(page.getByRole('main')).toContainText('SKU 0926') +}) diff --git a/e2e/login.setup.ts b/e2e/login.setup.ts new file mode 100644 index 00000000..7017bcc8 --- /dev/null +++ b/e2e/login.setup.ts @@ -0,0 +1,17 @@ +import { test, expect } from '@playwright/test' + +const authFile = 'e2e/.auth/user.json' +const PASSWORD = process.env.REIMS_PASSWORD as string + +test('test', async ({ page }) => { + await page.goto('https://reims2.app/') + await page.getByRole('link', { name: 'Open REIMS2' }).click() + await page.getByLabel('Username').fill('reims') + await page.getByLabel('Password').fill(PASSWORD) + await page.getByLabel('Password').press('Enter') + await page.waitForURL('**/find') + await expect(page.getByRole('link', { name: 'REIMS Santa Ana' })).toBeInViewport() + + // await expect(page.locator('div').filter({ hasText: 'Setting up REIMS2' }).nth(2)).toBeVisible() + await page.context().storageState({ path: authFile }) +}) diff --git a/package.json b/package.json index 13b0c528..4460553b 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "@vitest/coverage-v8": "2.0.5", "@vitest/ui": "2.0.5", "@vue/eslint-config-typescript": "13.0.0", + "dotenv": "^16.4.5", "eslint": "8.57.0", "eslint-config-prettier": "9.1.0", "eslint-config-standard": "17.1.0", diff --git a/playwright.config.ts b/playwright.config.ts index d51cebad..a146d943 100644 --- a/playwright.config.ts +++ b/playwright.config.ts @@ -1,11 +1,7 @@ import { defineConfig, devices } from '@playwright/test' +import dotenv from 'dotenv' -/** - * Read environment variables from file. - * https://github.com/motdotla/dotenv - */ -// import dotenv from 'dotenv'; -// dotenv.config({ path: path.resolve(__dirname, '.env') }); +dotenv.config() /** * See https://playwright.dev/docs/test-configuration. @@ -33,19 +29,35 @@ export default defineConfig({ /* Configure projects for major browsers */ projects: [ + { + name: 'setup', + testMatch: /.*\.setup\.ts/, + }, { name: 'chromium', - use: { ...devices['Desktop Chrome'] }, + use: { + ...devices['Desktop Chrome'], + storageState: 'e2e/.auth/user.json', + }, + dependencies: ['setup'], }, { name: 'firefox', - use: { ...devices['Desktop Firefox'] }, + use: { + ...devices['Desktop Firefox'], + storageState: 'e2e/.auth/user.json', + }, + dependencies: ['setup'], }, { name: 'webkit', - use: { ...devices['Desktop Safari'] }, + use: { + ...devices['Desktop Safari'], + storageState: 'e2e/.auth/user.json', + }, + dependencies: ['setup'], }, /* Test against mobile viewports. */ diff --git a/yarn.lock b/yarn.lock index 0027c252..03793a69 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4208,6 +4208,13 @@ __metadata: languageName: node linkType: hard +"dotenv@npm:^16.4.5": + version: 16.4.5 + resolution: "dotenv@npm:16.4.5" + checksum: 10/55a3134601115194ae0f924e54473459ed0d9fc340ae610b676e248cca45aa7c680d86365318ea964e6da4e2ea80c4514c1adab5adb43d6867fb57ff068f95c8 + languageName: node + linkType: hard + "eastasianwidth@npm:^0.2.0": version: 0.2.0 resolution: "eastasianwidth@npm:0.2.0" @@ -7358,6 +7365,7 @@ __metadata: "@vueuse/core": "npm:10.11.1" axios: "npm:1.7.4" dayjs: "npm:1.11.12" + dotenv: "npm:^16.4.5" eslint: "npm:8.57.0" eslint-config-prettier: "npm:9.1.0" eslint-config-standard: "npm:17.1.0"