From 1429340c1311df4998f7aa1d74e8c6df8308b8fb Mon Sep 17 00:00:00 2001 From: Jan <78142954+jan872@users.noreply.github.com> Date: Wed, 25 Sep 2024 17:56:24 +0200 Subject: [PATCH] fix: locator selection and outputChannel selector (#138) * fix: The locator selection by vscode version did not work, because the vscode version was overwritten by the underlying chrome version and "122" was larger than all vscode versions. The vscode version is now preserved and use for locator selection. As of vscode 1.87.0 the bottombar's outputChanel selector does not have an attribute title anymore. The locator for 1.87.0 was thus added. * fix: fixed no-trailing-spaces --------- Co-authored-by: jan872 --- src/launcher.ts | 1 + src/locators/1.87.0.ts | 9 +++++++++ src/locators/insiders.ts | 4 ++-- src/pageobjects/bottomBar/AbstractViews.ts | 2 +- src/pageobjects/workbench/Input.ts | 2 +- src/service.ts | 5 +++-- 6 files changed, 17 insertions(+), 6 deletions(-) create mode 100644 src/locators/1.87.0.ts diff --git a/src/launcher.ts b/src/launcher.ts index ec81b66b..8b8d66ea 100644 --- a/src/launcher.ts +++ b/src/launcher.ts @@ -87,6 +87,7 @@ export default class VSCodeServiceLauncher { } const version = cap[VSCODE_CAPABILITY_KEY].version || cap.browserVersion || DEFAULT_CHANNEL + cap[VSCODE_CAPABILITY_KEY].version = version /** * setup VSCode Desktop diff --git a/src/locators/1.87.0.ts b/src/locators/1.87.0.ts new file mode 100644 index 00000000..c31136a1 --- /dev/null +++ b/src/locators/1.87.0.ts @@ -0,0 +1,9 @@ +import { BottomBarViews as BottomBarViewsImport } from './1.84.0.js' + +export * from './1.84.0.js' +export const locatorVersion = '1.87.0' + +export const BottomBarViews = { + ...BottomBarViewsImport, + outputChannels: 'ul[aria-label="Output actions"] select' +} diff --git a/src/locators/insiders.ts b/src/locators/insiders.ts index 1fbf8a0b..12bc635e 100644 --- a/src/locators/insiders.ts +++ b/src/locators/insiders.ts @@ -1,8 +1,8 @@ import { QuickOpenBox as QuickOpenBoxImport -} from './1.84.0.js' +} from './1.87.0.js' -export * from './1.84.0.js' +export * from './1.87.0.js' export const locatorVersion = 'insiders' export const QuickOpenBox = { ...QuickOpenBoxImport, diff --git a/src/pageobjects/bottomBar/AbstractViews.ts b/src/pageobjects/bottomBar/AbstractViews.ts index eff7e438..c238935d 100644 --- a/src/pageobjects/bottomBar/AbstractViews.ts +++ b/src/pageobjects/bottomBar/AbstractViews.ts @@ -37,7 +37,7 @@ export abstract class ChannelView extends ElementWithContextMenu { */ async getCurrentChannel (): Promise { const combo = await this.parent.$(this.locatorMap.BottomBarViews.channelCombo as string) - return combo.getAttribute('title') + return combo.getValue() } /** diff --git a/src/pageobjects/workbench/Input.ts b/src/pageobjects/workbench/Input.ts index f209c69c..7b6435f7 100644 --- a/src/pageobjects/workbench/Input.ts +++ b/src/pageobjects/workbench/Input.ts @@ -29,7 +29,7 @@ export abstract class Input extends BasePage { */ async getText (): Promise { const input = await this.inputBox$.$(this.locators.input) - return input.getAttribute('value') + return input.getValue() } /** diff --git a/src/service.ts b/src/service.ts index a37226f9..58c548bc 100644 --- a/src/service.ts +++ b/src/service.ts @@ -203,12 +203,13 @@ export default class VSCodeWorkerService implements Services.ServiceInstance { await browser.url('/') } + const vsCodeVersion = capabilities[VSCODE_CAPABILITY_KEY]?.version || capabilities.browserVersion || 'insiders' this._browser = browser - const locators = await getLocators(capabilities.browserVersion || 'insiders') + const locators = await getLocators(vsCodeVersion) const workbenchPO = new Workbench(locators) this._browser.addCommand('getWorkbench', () => workbenchPO.wait()) this._browser.addCommand('executeWorkbench', this._executeVSCode.bind(this)) - this._browser.addCommand('getVSCodeVersion', () => capabilities.browserVersion) + this._browser.addCommand('getVSCodeVersion', () => vsCodeVersion) this._browser.addCommand('isVSCodeWebSession', () => this._isWebSession) this._browser.addCommand('getVSCodeChannel', () => ( capabilities.browserVersion === 'insiders' ? 'insiders' : 'vscode'