Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
7ce3821
POC multiRemote
dprevost-LMI Aug 3, 2026
546cc11
Fixes + e2e
dprevost-LMI Aug 18, 2026
b7cef18
fix package.json
dprevost-LMI Aug 18, 2026
bfcc8c2
Add typing on this
dprevost-LMI Aug 18, 2026
3da18a8
Review typing
dprevost-LMI Aug 18, 2026
cadde9f
Ish working case
dprevost-LMI Aug 19, 2026
ac2a586
Acceptable implementation of array, multi-remote expected & oneOf
dprevost-LMI Aug 20, 2026
734f56d
Fixing some edge cases
dprevost-LMI Aug 20, 2026
5f2e4b9
code review
dprevost-LMI Aug 20, 2026
f873743
fixes and use unstable_select
dprevost-LMI Aug 21, 2026
b7b2831
Moving multi-remote compare into `executeBrowserCommand` to simplify
dprevost-LMI Aug 25, 2026
34179bf
Fix multi-remote browser mock and unit tests
dprevost-LMI Aug 25, 2026
90925af
Migrate toHaveUrl to multi-remote
dprevost-LMI Aug 25, 2026
491c398
Add e2e
dprevost-LMI Aug 25, 2026
ab33688
Ish working multi-remote case
dprevost-LMI Aug 25, 2026
a767c85
Working multi-remote values
dprevost-LMI Aug 25, 2026
895aea3
Fix missing typing for `toHaveText`
dprevost-LMI Aug 26, 2026
a7815c9
Add toBe specific browser assertion
dprevost-LMI Aug 26, 2026
dba7a77
Add element existence test
dprevost-LMI Aug 26, 2026
0d57ab2
Fix error message for multi-remotes and toBe
dprevost-LMI Aug 26, 2026
0c516f0
Fix multi-remote values error message
dprevost-LMI Aug 26, 2026
60903a0
Adjust multi-remote values typing and code review
dprevost-LMI Aug 26, 2026
97385b4
Review typing of Actual
dprevost-LMI Aug 26, 2026
0ffdd45
Allow showing which multi-remote element is not displayed
dprevost-LMI Aug 26, 2026
862c88e
Multi-remote values in error message for $$()
dprevost-LMI Aug 26, 2026
f5448ce
Have multi-remote values in error message for toHaveText
dprevost-LMI Aug 26, 2026
a396cc6
Fix MultiRemoteElements[] not refreshed
dprevost-LMI Aug 27, 2026
641ee78
Add test case to fix
dprevost-LMI Aug 27, 2026
c3da82a
Add more edges e2e cases
dprevost-LMI Aug 27, 2026
611ad31
Add better array test case
dprevost-LMI Aug 27, 2026
e9b0c41
Reenable muli-remote e2e
dprevost-LMI Aug 27, 2026
e931c99
Disable coverage for now
dprevost-LMI Aug 27, 2026
14be430
Fix e2e
dprevost-LMI Aug 27, 2026
2455c57
fix rebase issues
dprevost-LMI Aug 29, 2026
5b88f17
Fix element array return truhty on `obj.every(isMultiRemoteElement)`
dprevost-LMI Aug 30, 2026
4fa1b72
Better solid fix to bypass async iterator of ElementArray
dprevost-LMI Aug 30, 2026
278f92d
Remove multi-remote array support since order is not garantee
dprevost-LMI Aug 30, 2026
fe049c6
Enable select env flag
dprevost-LMI Aug 30, 2026
b4a1a5f
Remove unsupported array case
dprevost-LMI Aug 30, 2026
ac11697
Require `webdriverio` 9.31.5 for `select` api
dprevost-LMI Aug 30, 2026
feca9c3
Ensure non-multi-remote are not mixe-up + fix toHaveUrl types
dprevost-LMI Aug 30, 2026
8af4a2e
Fix linting
dprevost-LMI Aug 30, 2026
526bdb9
Review `executeBrowserCommand` and have working `toHaveLocalStorageItem`
dprevost-LMI Aug 30, 2026
627407a
Fix MultiRemoteElementArray case
dprevost-LMI Aug 30, 2026
c49fce8
Make `toHaveClipboardText` multi-remote
dprevost-LMI Aug 30, 2026
8eb960a
toHaveClipboardText e2e
dprevost-LMI Aug 30, 2026
f179d31
Fix formatMessage with MultiRemoteElementArray
dprevost-LMI Aug 30, 2026
6a40f64
fixing e2e
dprevost-LMI Aug 31, 2026
ccc5f81
Adjust types in toBe matchers
dprevost-LMI Aug 31, 2026
176865c
Support multi-remote element and values in all toHave matchers
dprevost-LMI Aug 31, 2026
6e0bee3
Add API types for `toHaveValue`
dprevost-LMI Aug 31, 2026
edc4d43
Add more e2e on `toBeDisplayed` following fixes
dprevost-LMI Aug 31, 2026
119e277
Review skip test
dprevost-LMI Aug 31, 2026
437c7f3
Add similar single browser e2e for element no longer/never exists
dprevost-LMI Aug 31, 2026
b17fbfc
Fix instabilities
dprevost-LMI Aug 31, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion __mocks__/@wdio/globals.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@
* Global mocks on root only as vitest support
* Re-exporting from test folder to benefit from typed mocks
*/
export { browser, $$, $ } from '../../test/__mocks__/@wdio/globals'
export { browser, $$, $, multiRemoteBrowser } from '../../test/__mocks__/@wdio/globals'
30 changes: 15 additions & 15 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -114,9 +114,9 @@
"webdriverio": "^9.31.5"
},
"peerDependencies": {
"@wdio/globals": "^9.0.0",
"@wdio/globals": "^9.23.0",
"@wdio/logger": "^9.0.0",
"webdriverio": "^9.28.0"
"webdriverio": "^9.31.5"
},
"peerDependenciesMeta": {
"@wdio/globals": {
Expand Down
18 changes: 18 additions & 0 deletions playgrounds/mocha/test/specs/wdio-matchers.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,24 @@ describe('WebdriverIO Custom Matchers', () => {
await expect(some(await nav)).toBeDisplayed()
await expect(some(await nav.filter(n => n.isExisting()))).toBeDisplayedInViewport()
})

it('should be able to query isDisplayed on element that never existed', async () => {
await browser.url("about:blank")
const h1 = $$('h1')

await expect(expect(h1).toBeDisplayed()).rejects.toThrow(/at least one result/)
})

// TODO to fix, failing with `Index out of bounds! $$(h1) returned only 0 elements`
it.skip('should be able to query isDisplayed on element no longer existing', async () => {
await browser.url('https://guinea-pig.webdriver.io/')
const h1 = $$('h1')
await expect(h1).toBeDisplayed()

await browser.url('about:blank')

await expect(expect(h1).toBeDisplayed()).rejects.toThrow(/at least one result/)
})
})

describe('Element state matchers', () => {
Expand Down
10 changes: 3 additions & 7 deletions playgrounds/multi-remote-mocha/test/specs/options.test.ts
Original file line number Diff line number Diff line change
@@ -1,17 +1,14 @@
import { $ } from '@wdio/globals'
import { setOptions, getConfig, getDefaultOptions, setDefaultOptions } from 'expect-webdriverio'
import { multiRemoteBrowser } from '@wdio/globals'
import { getDefaultOptions, setDefaultOptions } from 'expect-webdriverio'

describe('Global Options', () => {
const defaultWait = getDefaultOptions().wait

before(() => {
setOptions({ wait: 1 })
setDefaultOptions({ wait: 1 })
})

it('should set global wait option', () => {
expect(getConfig().wait).toBe(1)
expect(getConfig().wait).not.toBe(defaultWait)
expect(getDefaultOptions().wait).toBe(1)
expect(getDefaultOptions().wait).not.toBe(defaultWait)
expect(defaultWait).toBe(10000)
Expand All @@ -20,8 +17,7 @@ describe('Global Options', () => {
it('should allow setting and using global wait option', async () => {
const start = Date.now()

// Should fail immediately (wait: 1ms) TODO swap for multiRemoteBrowser.$() one day
await expect(expect($('non-existent-element-' + Date.now())).toBeDisplayed()).rejects.toThrow()
await expect(expect(multiRemoteBrowser.$('non-existent-element-' + Date.now())).toBeDisplayed()).rejects.toThrow()
const duration = Date.now() - start

// Ensure failure was fast (< 500ms) compared to default timeout
Expand Down
Loading