From 627f4237797d6b2652bf8c70a732630b4308dbef Mon Sep 17 00:00:00 2001 From: LingandRX Date: Thu, 29 May 2025 21:32:08 +0800 Subject: [PATCH] =?UTF-8?q?feat(login):=20=E6=9B=B4=E6=96=B0=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E5=8A=9F=E8=83=BD=E5=B9=B6=E6=B7=BB=E5=8A=A0=E7=8E=AF?= =?UTF-8?q?=E5=A2=83=E5=8F=98=E9=87=8F=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 .env 文件中添加 ACCOUNT 和 PASSWORD 环境变量 - 更新 baseFixture 中的 page.goto 方法,使用 baseURL 配置 - 移除 exportFixture 中未使用的 baseTest - 在 LoginPage 中添加 tenant 参数以支持多租户登录 - 更新 login.spec 中的测试用例,使用环境变量配置 - 调整 setup.ts 中的登录流程,使用新的登录方法 --- .env | 6 ++++-- fixtures/baseFixture.ts | 4 ++-- fixtures/exportFixutre.ts | 2 -- pages/loginPage.ts | 10 +++++++--- playwright.config.ts | 2 +- tests/login.spec.ts | 6 ++++-- tests/setup.ts | 2 +- 7 files changed, 19 insertions(+), 13 deletions(-) diff --git a/.env b/.env index dbcb7bf..3bdec4a 100644 --- a/.env +++ b/.env @@ -1,2 +1,4 @@ -BASE_URL=https://px.meiguanjia.net/web/ -# BASE_URL=https://px.meiguanjia.net/prestg/web/ \ No newline at end of file +BASE_URL=https://px.meiguanjia.net//web/#/frame/dashboard +# BASE_URL=https://px.meiguanjia.net/prestg/web/ +ACCOUNT=17770898274 +PASSWORD=a123456 \ No newline at end of file diff --git a/fixtures/baseFixture.ts b/fixtures/baseFixture.ts index 5744a1c..0921840 100644 --- a/fixtures/baseFixture.ts +++ b/fixtures/baseFixture.ts @@ -1,8 +1,8 @@ import { test as base } from '@playwright/test'; export const test = base.extend({ - page: async ({ page }, use) => { - await page.goto('/'); + page: async ({ page, baseURL }, use) => { + await page.goto(baseURL || ''); await use(page); } }); \ No newline at end of file diff --git a/fixtures/exportFixutre.ts b/fixtures/exportFixutre.ts index a791bb1..635b055 100644 --- a/fixtures/exportFixutre.ts +++ b/fixtures/exportFixutre.ts @@ -1,9 +1,7 @@ import { mergeTests } from '@playwright/test'; -import { test as baseTest } from '../fixtures/baseFixture'; import { test as loginTest } from '../fixtures/loginFixture'; export const test = mergeTests( - baseTest, loginTest ); diff --git a/pages/loginPage.ts b/pages/loginPage.ts index 8e91e0f..415a41b 100644 --- a/pages/loginPage.ts +++ b/pages/loginPage.ts @@ -20,16 +20,20 @@ export class LoginPage { this.first_menu = page.getByText('概况'); } - async user_login(account: string, password: string) { + async user_login(account: string, password: string, tenant?: string) { await this.login_account.fill(account); await this.account_pass_hint.waitFor(); await this.login_password.fill(password); await this.login_protocol.click(); await this.login_button.click(); + if (tenant) { + await this.page.getByText(tenant).click(); + } } - user_login_success() { - return this.first_menu; + async user_login_success() { + await expect(this.page).toHaveURL(/.*\/frame\/dashboard/); + await expect(this.page.getByText('商城数据')).toBeVisible(); } } \ No newline at end of file diff --git a/playwright.config.ts b/playwright.config.ts index ed50e02..c93c1aa 100644 --- a/playwright.config.ts +++ b/playwright.config.ts @@ -42,7 +42,7 @@ export default defineConfig({ }, { name: 'chromium', - use: { ...devices['Desktop Chrome'], storageState: 'state.json' }, + use: { ...devices['Desktop Chrome'] }, dependencies: ['setup'], }, ], diff --git a/tests/login.spec.ts b/tests/login.spec.ts index 1a0cb89..d24e609 100644 --- a/tests/login.spec.ts +++ b/tests/login.spec.ts @@ -1,6 +1,8 @@ import { expect, test } from '../fixtures/exportFixutre'; +import dotenv from 'dotenv'; +dotenv.config(); test('login success', async ({ page, loginPage }) => { - await loginPage.user_login('17770898274', 'a123456'); - await expect(loginPage.user_login_success()).toBeVisible(); + await loginPage.user_login(process.env.ACCOUNT || '', process.env.PASSWORD || '', '海石XW'); + await loginPage.user_login_success(); }); \ No newline at end of file diff --git a/tests/setup.ts b/tests/setup.ts index ce656b5..101d348 100644 --- a/tests/setup.ts +++ b/tests/setup.ts @@ -6,6 +6,6 @@ setup('state setup', async ({ page }) => { const loginPage = new LoginPage(page); await loginPage.user_login('17700000003', 'a123456'); await page.pause(); - await loginPage.user_login_success().waitFor(); + await loginPage.user_login_success(); await page.context().storageState({ path: 'state.json', indexedDB: true }); }); \ No newline at end of file