Транспортир с машинописным текстом - как понять, какой тест строки не прошел из трассировки стека? - PullRequest
0 голосов
/ 09 июля 2020

Мы пишем тесты транспортира на Typescript. Поскольку вызовы селена должны быть синхронными, почти каждая строка в тесте начинается с "await":

 var option = await element(by.cssContainingText('mat-option .mat-option-text', text));
        await browser.wait(protractor.ExpectedConditions.elementToBeClickable(option), 10000);
        await option.click();  

Когда тест не проходит - ОЧЕНЬ трудно понять, где именно тест не прошел. Я понимаю, что TS переносится в JavaScript, но в файлах. js также нет полезной информации, за исключением последнего файла / метода, который не удался. Например, если тест вызывает checkbox.set () 20 раз - как я могу узнать, какой из вызовов завершился неудачно?

Единственная полезная информация из трассировки стека ниже - это следующая строка:

at Function.<anonymous> (D:\Source\Fm\pmc\main\web\Automation\NovaFitAutomation\src\utils\combobox-service.ts:15:23)

Rest из. js строк - это браузер. js, обещание. js, et c, которые совершенно не помогают. Вот пример трассировки стека из нашего теста:

Failures:
1) Gui Tests 177699 - Full Flow - With Import - T600MMSR
  Message:
    Failed: Wait timed out after 10002ms
  Stack:
    TimeoutError: Wait timed out after 10002ms
        at D:\Source\Fm\pmc\main\web\Automation\NovaFitAutomation\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:2201:17
        at ManagedPromise.invokeCallback_ (D:\Source\Fm\pmc\main\web\Automation\NovaFitAutomation\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:1376:14)
        at TaskQueue.execute_ (D:\Source\Fm\pmc\main\web\Automation\NovaFitAutomation\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:3084:14)
        at TaskQueue.executeNext_ (D:\Source\Fm\pmc\main\web\Automation\NovaFitAutomation\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:3067:27)
        at D:\Source\Fm\pmc\main\web\Automation\NovaFitAutomation\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:2927:27
        at D:\Source\Fm\pmc\main\web\Automation\NovaFitAutomation\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:668:7
        at runMicrotasks (<anonymous>)
        at processTicksAndRejections (internal/process/task_queues.js:97:5)
    From: Task: <anonymous wait>
        at scheduleWait (D:\Source\Fm\pmc\main\web\Automation\NovaFitAutomation\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:2188:20)
        at ControlFlow.wait (D:\Source\Fm\pmc\main\web\Automation\NovaFitAutomation\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:2517:12)
        at Driver.wait (D:\Source\Fm\pmc\main\web\Automation\NovaFitAutomation\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver.js:934:29)
        at run (D:\Source\Fm\pmc\main\web\Automation\NovaFitAutomation\node_modules\protractor\built\browser.js:59:33)
        at ProtractorBrowser.to.<computed> [as wait] (D:\Source\Fm\pmc\main\web\Automation\NovaFitAutomation\node_modules\protractor\built\browser.js:67:16)
        at Function.<anonymous> (D:\Source\Fm\pmc\main\web\Automation\NovaFitAutomation\src\utils\combobox-service.ts:15:23)
        at Generator.next (<anonymous>)
        at fulfilled (D:\Source\Fm\pmc\main\web\Automation\NovaFitAutomation\out_files\src\utils\combobox-service.js:4:58)
        at processTicksAndRejections (internal/process/task_queues.js:97:5)
    From: Task: Run fit("177699 - Full Flow - With Import - T600MMSR") in control flow
        at UserContext.<anonymous> (D:\Source\Fm\pmc\main\web\Automation\NovaFitAutomation\node_modules\jasminewd2\index.js:94:19)
        at D:\Source\Fm\pmc\main\web\Automation\NovaFitAutomation\node_modules\jasminewd2\index.js:64:48
        at ControlFlow.emit (D:\Source\Fm\pmc\main\web\Automation\NovaFitAutomation\node_modules\protractor\node_modules\selenium-webdriver\lib\events.js:62:21)
        at ControlFlow.shutdown_ (D:\Source\Fm\pmc\main\web\Automation\NovaFitAutomation\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:2674:10)
        at D:\Source\Fm\pmc\main\web\Automation\NovaFitAutomation\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:2599:53
    From asynchronous test:
    Error
        at Suite.<anonymous> (D:\Source\Fm\pmc\main\web\Automation\NovaFitAutomation\src\tests\guiTests.ts:1126:5)
        at Object.<anonymous> (D:\Source\Fm\pmc\main\web\Automation\NovaFitAutomation\src\tests\guiTests.ts:847:1)
        at Module._compile (internal/modules/cjs/loader.js:1158:30)
        at Object.Module._extensions..js (internal/modules/cjs/loader.js:1178:10)
        at Module.load (internal/modules/cjs/loader.js:1002:32)
        at Function.Module._load (internal/modules/cjs/loader.js:901:14)

Ответы [ 2 ]

1 голос
/ 10 июля 2020

Ведение журнала - это один из способов go

Другой вариант - улучшить ваш код

browser.wait принимает 3 параметра:

  • условие как функция
  • тайм-аут
  • сообщение об ошибке

Итак, если вы это сделаете,

await browser.wait(
  protractor.ExpectedConditions.elementToBeClickable(option), 
  10000,
  'timeout waiting for element to be clickable ' + option.locator().toString()
);

Это расскажет, что не удалось, и какой локатор элементов вы использовали для эта функция ждать

0 голосов
/ 24 июля 2020
import {browser, ExpectedConditions as EC} from 'protactor';

await browser.wait(EC.elementToBeClickable(option), 10 * 1000,
 `${option} with ${option.locator().value} locator still not clickable after waiting for 10 seconds`);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...