Size: a a a

2020 January 08

ВС

Владимир Стецко in JS for testing
Andrei Dzeichyk
А как в beforeEach  отслеживать что тест до упал? А если есть  beforeEach в каждом спеке и еще в конфиге?
я уже не помню как конкретно это там было реализовано, давно с жасмином не работал.
Там была какая-то адовая кастомная функция takeScreenShotIfFailed, страшный код которой отбивал желание вникать.

Если нужно - могу раскопать че там было
источник

S

Str. in JS for testing
Andrei Dzeichyk
По поводу как упорядочить последовательность выполнения хуков я не подскажу, но как вариант, можно сделать кастомный репортёр для jasmine и в specDone отлавливать зафейлившиеся тесты. Благо jasmine  очень дружелюбный к малтипл репортам.
так specDone отрабатывает после  afterEach, я рассматривал такой вариант, но не взлетело
источник

ВС

Владимир Стецко in JS for testing
Еще помню как-то просто нагуглил сам как сделать скрины на каждый упавший экспект. Но там у жасмина тоже вскрылись проблемы с асинхронностью
источник

S

Str. in JS for testing
Владимир Стецко
на одном из моих проектов для обхода этой проблемы юзали только beforeEach и по сути задепрекейтили afterEach
спасибо, я об этом думал, но лень тесты переписывать
я думаю должен быть нормальный способ
источник

ВС

Владимир Стецко in JS for testing
ну вот один из нормальных - скринить не в афтере а на стадии экспекта. Но у меня он завелся только с помощью черной магии deasync-а, и то я не до конца понял почему оно работает
источник

ВС

Владимир Стецко in JS for testing
а виной всему то что жасмин устарел и с асинхронностью не очень дружит
источник

ВС

Владимир Стецко in JS for testing
вот в таких редкоиспользуемых случаях как кастомные махинации с репортерами
источник

OI

Oleksii Ihnatiuk in JS for testing
@user_str у тебя трактор?
источник

S

Str. in JS for testing
Oleksii Ihnatiuk
@user_str у тебя трактор?
да
источник

OI

Oleksii Ihnatiuk in JS for testing
jasmine.getEnv().addReporter({
     specDone: async (result) => {
       const dir = './screenshots/';

       if (result.status === 'failed') {
         const png = await browser.takeScreenshot(
         );

         if (!fs.existsSync(dir)) {
           fs.mkdirSync(dir);
           if (!fs.existsSync(dir)) {
             fs.mkdirSync(dir);
           }
         }

         const fileName = (result.fullName).replace(/[\/\\]/g, ' ').substring(0, 200);
         const stream = fs.createWriteStream(dir + fileName + '.png');
         stream.write(new Buffer(png, 'base64'));
         stream.end();
       }
     }
   });
источник

OI

Oleksii Ihnatiuk in JS for testing
в onPrepare
источник

S

Str. in JS for testing
Oleksii Ihnatiuk
jasmine.getEnv().addReporter({
     specDone: async (result) => {
       const dir = './screenshots/';

       if (result.status === 'failed') {
         const png = await browser.takeScreenshot(
         );

         if (!fs.existsSync(dir)) {
           fs.mkdirSync(dir);
           if (!fs.existsSync(dir)) {
             fs.mkdirSync(dir);
           }
         }

         const fileName = (result.fullName).replace(/[\/\\]/g, ' ').substring(0, 200);
         const stream = fs.createWriteStream(dir + fileName + '.png');
         stream.write(new Buffer(png, 'base64'));
         stream.end();
       }
     }
   });
спасибо большое
источник

OI

Oleksii Ihnatiuk in JS for testing
пользуйся на здоровье
источник

OI

Oleksii Ihnatiuk in JS for testing
это не я писал если что 😂
источник

OI

Oleksii Ihnatiuk in JS for testing
Str.
Помогите, плиз
Хочу изменить последовательность выполнения методов afterEach в тесте и в конфиге (нужно, чтобы  afterEach в конфигe отрабатывал раньше, чем в тесте)
Такое вообще возможно реализовать?
вот это очень плохой вопрос был изначально. Пиши что ты хочешь в результате, а саму имплементацию помогут уже ;) Самое сложное это понять, что тебе действительно надо
источник

S

Str. in JS for testing
Oleksii Ihnatiuk
вот это очень плохой вопрос был изначально. Пиши что ты хочешь в результате, а саму имплементацию помогут уже ;) Самое сложное это понять, что тебе действительно надо
понял, принял
поработаю над этим)
источник

AD

Andrei Dzeichyk in JS for testing
Владимир Стецко
а виной всему то что жасмин устарел и с асинхронностью не очень дружит
С ^3 все там ок с асинхронностью
источник

ВС

Владимир Стецко in JS for testing
м.б.
Я уже даже не помню какую версию юзал
источник

ВС

Владимир Стецко in JS for testing
помню что еще год назад было не ок
источник

ВС

Владимир Стецко in JS for testing
а щас вроде создатели жасмина запилили джест
источник