Size: a a a

2020 January 21

OI

Oleksii Ihnatiuk in JS for testing
Попробуй waitForClickable или как-то так называется
источник

I

Ihor in JS for testing
Я пробував наступний флов:
const createButton = await $('.mat-confirm.btn');
await createButton.waitForDisplayed (2000);

Результат: Cannot read waitForDisplayed() of undefined
источник

SG

Sergey Golovin in JS for testing
Ihor
Знаю:) Можливо порекомендуєте як хендлити waitForElement якщо елемент з'являється не одразу, а через 2-3 сек? Wdio кидає ерору і припиняє виконання
Implicit wait?
источник

I

Ihor in JS for testing
Sergey Golovin
Implicit wait?
Thanks for the idea!
источник

SG

Sergey Golovin in JS for testing
Ihor
Thanks for the idea!
Будь ласка
источник

SG

Sergey Golovin in JS for testing
А в чем необходимость миграции?
источник

I

Ihor in JS for testing
Protractor вже активно не підтримується. Крім того, я використовую модулі типу protractor-image-comparison які також припиняють підтримувати у зв'язку з цим
источник

OI

Oleksii Ihnatiuk in JS for testing
Ihor
Я пробував наступний флов:
const createButton = await $('.mat-confirm.btn');
await createButton.waitForDisplayed (2000);

Результат: Cannot read waitForDisplayed() of undefined
давай разберем каждую строку:
const createButton = await $('.mat-confirm.btn');
что возвращает $() когда не находит элемент по такому селектору? Не правильно, он возвращает undefined.
А потом ты пишешь:
await undefined.waitForDisplayed(2000)
я думаю теперь ошибка понятнее становится
источник

OI

Oleksii Ihnatiuk in JS for testing
доки написаны под sync режим
источник

OI

Oleksii Ihnatiuk in JS for testing
Могу тебе подкинуть костылик
источник

I

Ihor in JS for testing
Oleksii Ihnatiuk
Могу тебе подкинуть костылик
Давай)
источник

OI

Oleksii Ihnatiuk in JS for testing
async function isClicked(element: WebdriverIOAsync.Element): Promise<boolean> {
 try {
   await element.click();
   return true;
 } catch(error) {
   // tackle issue with overlap element
   await element.scrollIntoView();
   throw error;
 }
}
и потом
const createButton = await $('.mat-confirm.btn');
await browser.waitUntil(async () => await isClicked(createButton))
источник

OI

Oleksii Ihnatiuk in JS for testing
попробуй такое, у меня немного по-другому, но суть такая же
источник

OI

Oleksii Ihnatiuk in JS for testing
я тебе немного соврал, там не undefined а объект с бла-бла-бла внутри
источник

I

Ihor in JS for testing
Дякую, спробую
источник

OI

Oleksii Ihnatiuk in JS for testing
тебе нужно писать свои предикаты и засовывать в такие конструкции
источник

NR

Nikolay Rudenko in JS for testing
wdio 5.18.5
node v12.14.1

Привет, ребята

Перепробовал готовые решения, но получаю два результата

1. Когда тест описан в класе и в методе, всегда проходит не зависимо от значения в проверке

import * as SignInPage from "../pageObjects/SignInPage";

class SignInTests {
 signInTests(){

   describe ('Auth page', () => {
     it ('should have the right title', () => {
       SignInPage.open();
       expect(SignInPage.title()).toBe('Some Title');
     });
   });
 }
}

2. Когда тест не описан не в классе и не в методе

describe ('Auth page', () => {
     it ('should have the right title', () => {
       SignInPage.open();
       expect( SignInPage.title() ).toBe ('Some Title');
     });
   });

Ошибка TypeError: SignInPage.open is not a function

Подскажите пожалуйста, что и где я делаю не так?
источник

AP

Alexander Popov in JS for testing
А что тут происходит вообще?
источник

AP

Alexander Popov in JS for testing
В дескрайбе ит в котором объект класса в методе которого дескрайб в котором ит?
источник

NR

Nikolay Rudenko in JS for testing
// SignInPage.page.js

const Page = require('./Page');
const SignInPage = Object.create(Page, {
 /
  * define elements
  */
 title:     {get title() { return browser.getTitle(); }},
 nextBtn:   {get nextBtn() { return $('.mat-button-base'); }},
 input:     {get input() { return $('<input />'); }},
 /

  * define or overwride page methods
  */
 open: { value: function () {
   Page.open.call(this, 'auth/sign-in')
 }},

 nextBtnClick: { value: function () {
     this.nextBtn.click()
   }
 }
});
module.exports = SignInPage;
источник