diff --git a/src/common/BO/loginBO.ts b/src/common/BO/loginBO.ts deleted file mode 100644 index 6919dad5..00000000 --- a/src/common/BO/loginBO.ts +++ /dev/null @@ -1,34 +0,0 @@ -import testContext from '@utils/testContext'; - -import loginPage from '@pages/BO/login'; -import dashboardPage from '@pages/BO/dashboard'; - -import {expect} from '@playwright/test'; -import type {Page} from 'playwright'; -import type {TestInfo} from '@playwright/test'; - -export default { - async loginBO( - testInfo: TestInfo, - page: Page, - email: string = global.BO.EMAIL, - password: string = global.BO.PASSWD, - ): Promise { - await testContext.addContextItem(testInfo, 'testIdentifier', 'loginBO'); - - await loginPage.goTo(page, global.BO.URL); - await loginPage.successLogin(page, email, password); - - const pageTitle = await dashboardPage.getPageTitle(page); - expect(pageTitle).toContain(dashboardPage.pageTitle); - }, - - async logoutBO(testInfo: TestInfo, page: Page): Promise { - await testContext.addContextItem(testInfo, 'testIdentifier', 'logoutBO'); - - await dashboardPage.logoutBO(page); - - const pageTitle = await loginPage.getPageTitle(page); - expect(pageTitle).toContain(loginPage.pageTitle); - }, -}; diff --git a/src/interfaces/BO/dashboard/index.ts b/src/interfaces/BO/dashboard/index.ts index e4670ea4..f41f02df 100644 --- a/src/interfaces/BO/dashboard/index.ts +++ b/src/interfaces/BO/dashboard/index.ts @@ -1,3 +1,5 @@ -export interface DashboardPageInterface { +import {BOBasePagePageInterface} from '@interfaces/BO'; + +export interface DashboardPageInterface extends BOBasePagePageInterface { readonly pageTitle: string; } diff --git a/src/interfaces/BO/index.ts b/src/interfaces/BO/index.ts new file mode 100644 index 00000000..b8f06430 --- /dev/null +++ b/src/interfaces/BO/index.ts @@ -0,0 +1,6 @@ +import type {CommonPageInterface} from '@interfaces/index'; +import type {Page} from '@playwright/test'; + +export interface BOBasePagePageInterface extends CommonPageInterface { + logoutBO(page: Page): Promise; +} diff --git a/src/interfaces/BO/login/index.ts b/src/interfaces/BO/login/index.ts index cbcc6764..b8bee851 100644 --- a/src/interfaces/BO/login/index.ts +++ b/src/interfaces/BO/login/index.ts @@ -1,6 +1,8 @@ +import {BOBasePagePageInterface} from '@interfaces/BO'; + import type {Page} from '@playwright/test'; -export interface LoginPageInterface { +export interface LoginPageInterface extends BOBasePagePageInterface { readonly pageTitle: string; successLogin(page: Page, email: string, password: string): Promise; diff --git a/src/interfaces/index.ts b/src/interfaces/index.ts new file mode 100644 index 00000000..0773b635 --- /dev/null +++ b/src/interfaces/index.ts @@ -0,0 +1,7 @@ +import type {Page} from '@playwright/test'; + +export interface CommonPageInterface { + getPageTitle(page: Page): Promise; + + goTo(page: Page, url: string): Promise; +} diff --git a/src/pages/BO/dashboard/index.ts b/src/pages/BO/dashboard/index.ts index 0c4a9fa6..431bdfcf 100644 --- a/src/pages/BO/dashboard/index.ts +++ b/src/pages/BO/dashboard/index.ts @@ -1,12 +1,15 @@ +import type {DashboardPageInterface} from '@interfaces/BO/dashboard'; import semver from 'semver'; -let file: string; +const psVersion = process.env.PS_VERSION ?? '0.0.0'; -if (semver.gte(process.env.PS_VERSION as string, '8.0.0')) { - file = '@versions/8.0.0/pages/BO/dashboard'; -} else { - file = '@versions/8.0.0/pages/BO/dashboard'; +/* eslint-disable global-require */ +function requirePage(): DashboardPageInterface { + if (semver.gte(psVersion, '8.0.0')) { + return require('@versions/8.0.0/pages/BO/dashboard'); + } + return require('@versions/8.0.0/pages/BO/dashboard'); } +/* eslint-enable global-require */ -const Dashboard = await import(file); -export default Dashboard; +export default requirePage(); diff --git a/src/pages/BO/login/index.ts b/src/pages/BO/login/index.ts index 6f8dc815..7a11aa34 100644 --- a/src/pages/BO/login/index.ts +++ b/src/pages/BO/login/index.ts @@ -1,12 +1,15 @@ +import type {LoginPageInterface} from '@interfaces/BO/login'; import semver from 'semver'; -let file: string; +const psVersion = process.env.PS_VERSION ?? '0.0.0'; -if (semver.gte(process.env.PS_VERSION as string, '8.0.0')) { - file = '@versions/8.0.0/pages/BO/login'; -} else { - file = '@versions/8.0.0/pages/BO/login'; +/* eslint-disable global-require */ +function requirePage(): LoginPageInterface { + if (semver.gte(psVersion, '8.0.0')) { + return require('@versions/8.0.0/pages/BO/login'); + } + return require('@versions/8.0.0/pages/BO/login'); } +/* eslint-enable global-require */ -const Login = await import(file); -export default Login; +export default requirePage(); diff --git a/src/versions/8.0.0/pages/BO/dashboard/index.ts b/src/versions/8.0.0/pages/BO/dashboard/index.ts index 664f0deb..46f73df1 100644 --- a/src/versions/8.0.0/pages/BO/dashboard/index.ts +++ b/src/versions/8.0.0/pages/BO/dashboard/index.ts @@ -625,4 +625,4 @@ class Dashboard extends BOBasePage implements DashboardPageInterface { } } -export default new Dashboard(); +module.exports = new Dashboard(); diff --git a/src/versions/8.0.0/pages/BO/login/index.ts b/src/versions/8.0.0/pages/BO/login/index.ts index 415e46f1..deb67dce 100644 --- a/src/versions/8.0.0/pages/BO/login/index.ts +++ b/src/versions/8.0.0/pages/BO/login/index.ts @@ -184,4 +184,4 @@ class Login extends BOBasePage implements LoginPageInterface { } } -export default new Login(); +module.exports = new Login(); diff --git a/tsconfig.json b/tsconfig.json index e58dffa6..f4e72156 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,31 +1,55 @@ { "compilerOptions": { - "noImplicitAny": true, - "noImplicitThis": true, - "module": "es2022", - "target": "es2022", - "strict": true, - "moduleResolution": "node", + "listEmittedFiles": true, "allowSyntheticDefaultImports": true, - "resolveJsonModule": true, "esModuleInterop": true, - "allowJs": true, - "downlevelIteration": true, - "baseUrl": "./", - "outDir": "dist", + "target": "es6", + "module": "commonjs", + "skipDefaultLibCheck": true, + "skipLibCheck": true, + "moduleResolution": "node", + "noImplicitAny": true, + "noImplicitThis": false, + "strict": true, + "strictFunctionTypes": true, + "isolatedModules": true, "declaration": true, + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], + "baseUrl": "./", + "outDir": "./dist", "paths": { - "@interfaces/*": ["src/interfaces/*"], - "@pages/*": ["src/pages/*"], - "@common/*": ["src/common/*"], - "@data/*": ["src/data/*"], - "@types/*": ["src/types/*"], - "@utils/*": ["src/utils/*"], - "@versions/*": ["src/versions/*"] + "@interfaces/*": [ + "src/interfaces/*" + ], + "@pages/*": [ + "src/pages/*" + ], + "@data/*": [ + "src/data/*" + ], + "@types/*": [ + "src/types/*" + ], + "@utils/*": [ + "src/utils/*" + ], + "@versions/*": [ + "src/versions/*" + ] }, - "typeRoots": ["types", "node_modules/@types"], - "skipLibCheck": true + "typeRoots": [ + "types", + "node_modules/@types" + ], }, - "include": ["src/**/*"], - "exclude": ["node_modules"] + "include": [ + "src/**/*" + ], + "exclude": [ + "node_modules" + ] }