Update dependencies and refactor page navigation logic

* Added `@wdio/cli` as a development dependency for improved test command handling.
* Refactored URL construction in the `Page` class to enhance clarity and maintainability.
* Updated import statements in `Subscribing.page.ts` for consistency and removed unnecessary options in the constructor.
This commit is contained in:
2025-08-18 21:55:30 -04:00
parent f3ecb8c35b
commit 1cf223fd85
4 changed files with 26 additions and 12 deletions

View File

@@ -10,6 +10,7 @@
"devDependencies": { "devDependencies": {
"@eslint/js": "9.33.0", "@eslint/js": "9.33.0",
"@types/bun": "latest", "@types/bun": "latest",
"@wdio/cli": "9.19.1",
"globals": "16.3.0", "globals": "16.3.0",
"typescript-eslint": "8.40.0" "typescript-eslint": "8.40.0"
}, },

View File

@@ -20,14 +20,28 @@ export default class Page {
public async open(options: PageOpenOptions = {}): Promise<void> { public async open(options: PageOpenOptions = {}): Promise<void> {
const {queryParameters, isNewTabRequest, endpoint, requestPath} = options; const {queryParameters, isNewTabRequest, endpoint, requestPath} = options;
const pageUrl = `${this._baseUrl}/${endpoint}${requestPath}?${Object.entries(queryParameters ?? {})
.map(([queryParameterName, queryParamterValue]) => `${queryParameterName}=${queryParamterValue}&`) // Build the URL path properly
.join('')}`; let pageUrl = this._baseUrl;
if (endpoint) {
pageUrl += `/${endpoint}`;
}
if (requestPath) {
pageUrl += `/${requestPath}`;
}
// Add query parameters if they exist
if (queryParameters && Object.keys(queryParameters).length > 0) {
const queryString = Object.entries(queryParameters)
.map(([queryParameterName, queryParameterValue]) => `${queryParameterName}=${queryParameterValue}`)
.join('&');
pageUrl += `?${queryString}`;
}
if (isNewTabRequest) { if (isNewTabRequest) {
await browser.newWindow(pageUrl); await (browser as any).newWindow(pageUrl);
} else { } else {
await browser.url(pageUrl); await (browser as any).url(pageUrl);
} }
} }
} }

View File

@@ -1,17 +1,16 @@
import Page, {PageOpenOptions} from './Page.ts'; import {$} from '@wdio/globals';
import Page, {PageOpenOptions} from './Page';
export type SubscribingPageOptions = {};
export class SubscribingPage extends Page { export class SubscribingPage extends Page {
constructor(baseUri: string, options: SubscribingPageOptions) { constructor(baseUri: string) {
super(baseUri, options); super(baseUri);
} }
get videoElement() { get videoElement() {
return $('video'); return $('video');
} }
public async open(options?: PageOpenOptions): Promise<void> { public override async open(options?: PageOpenOptions): Promise<void> {
await super.open(options); await super.open(options);
} }
} }

View File

@@ -1 +1 @@
export * from './Subscribing.page.ts'; export * from './Subscribing.page';