testplane
testplane copied to clipboard
Not working wdio expect
Not working wdio expect in hermione https://webdriver.io/docs/api/expect-webdriverio const assert = require('chai').assert; require('expect-webdriverio');
global.browser describe('yandex', async function() { it('search', async function() { await this.browser.url('https://ya.ru/'); await expect(this.browser.$('#text')).toBeDisplayed() }); });
error:
chrome
✘ ReferenceError: browser is not defined
at Object.toBeDisplayedFn (C:\work\hermione-example\node_modules\expect-webdriverio\lib\matchers\element\toBeDisplayed.js:8:5)
at Object.runJestExpect (C:\work\hermione-example\node_modules\expect-webdriverio\lib\util\expectAdapter.js:10:15)
at Object.toBeDisplayed (C:\work\hermione-example\node_modules\expect-webdriverio\lib\matchers\element\toBeDisplayed.js:21:38)
at EXTERNAL_MATCHER_TRAP (C:\work\hermione-example\node_modules\expect\build\index.js:386:30)
at Object.throwingMatcher [as toBeDisplayed] (C:\work\hermione-example\node_modules\expect\build\index.js:387:15)
at Object.
Hello.
Look at examples here - https://webdriver.io/docs/api/expect-webdriverio/. You should rewrite your code like this:
it('search', async function() {
await this.browser.url('https://ya.ru/');
const elem = await this.browser.$('#text');
await expect(elem).toBeDisplayed()
});
Хочу добавить что у меня такая же проблема. Это связано с тем, что expect-webdriver берет browser из глобальной области видимости, из-за этого browser is not defined https://github.com/webdriverio/expect-webdriverio/blob/dd3d2c0c5960cc7bedad7894a30508bb79c99e67/src/matchers/element/toBeDisplayed.ts#L7
Но при этом матчеры для browser работают нормально, так как там browser берется из аргументов https://github.com/webdriverio/expect-webdriverio/blob/dd3d2c0c5960cc7bedad7894a30508bb79c99e67/src/matchers/browser/toHaveTitle.ts#L4
Есть какое-то решение? Можно перед тестом делать global.window = this.window, но кажется что это может быть небезопасно из-за параллельного выполнения тестов
@DudaGod привет Если не трудно, скажи, пожалуйста, используется ли у вас expect-webdriverio или его какой-то аналог для утверждений по типу: "имеет атрибут", "находится во вьюпорте"? Есть идея писать кастомные команды гермионы вместо expect-webdriverio, чтобы не заморачиваться с решением этой проблемы
Привет.
В наших проектах мы используем assert из chai и дефолтные команды из API wdio. Чтобы определить имеет ли элемент аттрибут необходимо использовать команду - getAttribute. А для проверки, что элемент находится во вьюпорте используем - isDisplayedInViewport.
Есть какое-то решение? Можно перед тестом делать global.window = this.window, но кажется что это может быть небезопасно из-за параллельного выполнения тестов
Я внимательнее не успел посмотреть, но по коду который ты прислал выглядит действительно довольно странно. И похоже правильное решение это занести PR в expect-webdriverio с исправлением.
@ant1dot Создал issue в expect-webdriver, если это можно исправить без ломающих изменений, то закину туда пулл реквест
https://github.com/webdriverio/expect-webdriverio/issues/601
С версии 5.6.0 expect-webdriverio приезжает из коробки