Part 3/4 of the multi-remote support split from webdriverio#2172.
- Multi-remote strict strategy for `$()` and `$$()`: each instance is compared on its own
elements, with a single expected value, an index-based array, or one value per instance
(`expect.multiRemote()` or plain object shorthand); `.not`, `some()` and
`expect.arrayContaining()` apply per instance
- Re-fetching of multi-remote `$$()` between retries, reliable with
`WDIO_ENABLE_MULTI_REMOTE_ELEMENT_ARRAY`, best effort without it
- `toBe*` and string matchers (text, attribute, HTML, class, id, href, value, computed
label/role) support multi-remote elements; `toHaveText` requires the strict strategy flag
- Failure messages per instance, e.g. multi-remote<chrome, firefox>.$(`h1`)
- `toHaveSize`, `toHaveStyle` and `toHaveElementProperty` keep a plain object as a literal
- Types, type tests, docs and multi-remote playground specs
Number, size and object matchers and `toBeElementsArrayOfSize` come in part 4.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Part 3/4 of the multi-remote support split from #2172.
$()and$$(): each instance is compared on its own elements, with a single expected value, an index-based array, or one value per instance (expect.multiRemote()or plain object shorthand);.not,some()andexpect.arrayContaining()apply per instance$$()between retries, reliable withWDIO_ENABLE_MULTI_REMOTE_ELEMENT_ARRAY, best effort without ittoBe*and string matchers (text, attribute, HTML, class, id, href, value, computed label/role) support multi-remote elements;toHaveTextrequires the strict strategy flagh1)toHaveSize,toHaveStyleandtoHaveElementPropertykeep a plain object as a literalNumber, size and object matchers and
toBeElementsArrayOfSizecome in part 4.