Size: a a a

2019 November 26

D

Denis in JS for testing
Привет чат. Умозрительная задача. Есть react компонент, у него может быть 20 визуальных состояний. Компонентов таких 100. Я хочу сделать визуальный регрессионный пак на это всё. И чтобы он был супер-быстрый, гонялся локально в хедлес режиме.

Какой стек использовать?

На ум приходит Cypress, в который завезли юнит-тесты: https://github.com/bahmutov/cypress-react-unit-test. Замаунтил, заскриншотил, сравнил, следующий.

Но чтобы проверить все 20 визуальных стейтов максимально быстро, хотелось бы иметь доступ к стейту компонента а-ля Enzyme, и кипарис тут уже не помощник (поправьте если не прав).

На ум приходит стек типа Enzyme + Puppeteer + Jest + jest-screenshot: заранал а жесте, замаунтил и задал стейт в ензиме, нарисовал в пуппитере, сфоткал с помощью плагина к жесту. Но я ни разу не видел упоминания такой связки. А вы?

Ещё есть такая тема, но под вопросом доверие к столь специфическому рендерингу: https://gist.github.com/dferber90/6fe76cde582b8746191478fac34c8b7d

Что бы вы выбрали? Мб упустил что.
источник

OK

Oleksandr Khotemskyi in JS for testing
Denis
Привет чат. Умозрительная задача. Есть react компонент, у него может быть 20 визуальных состояний. Компонентов таких 100. Я хочу сделать визуальный регрессионный пак на это всё. И чтобы он был супер-быстрый, гонялся локально в хедлес режиме.

Какой стек использовать?

На ум приходит Cypress, в который завезли юнит-тесты: https://github.com/bahmutov/cypress-react-unit-test. Замаунтил, заскриншотил, сравнил, следующий.

Но чтобы проверить все 20 визуальных стейтов максимально быстро, хотелось бы иметь доступ к стейту компонента а-ля Enzyme, и кипарис тут уже не помощник (поправьте если не прав).

На ум приходит стек типа Enzyme + Puppeteer + Jest + jest-screenshot: заранал а жесте, замаунтил и задал стейт в ензиме, нарисовал в пуппитере, сфоткал с помощью плагина к жесту. Но я ни разу не видел упоминания такой связки. А вы?

Ещё есть такая тема, но под вопросом доверие к столь специфическому рендерингу: https://gist.github.com/dferber90/6fe76cde582b8746191478fac34c8b7d

Что бы вы выбрали? Мб упустил что.
> cypress-react-unit-test


// mount the component under test
   cy.mount(<HelloState />)
   // start testing!
   cy.contains('Hello Spider-man!')
   // mounted component can be selected via its name, function, or JSX
   // e.g. '@HelloState', HelloState, or <HelloState />
   cy.get(HelloState)
     .invoke('setState', { name: 'React' })
   cy.get(HelloState)
     .its('state')
     .should('deep.equal', { name: 'React' })
   // check if GUI has rerendered
   cy.contains('Hello React!')
источник

D

Denis in JS for testing
О, круто, спасибо!

Только что понял, что третий вариант (по второй ссылке) - это реализация второго. Там пуппетеер под капотом.
источник

OK

Oleksandr Khotemskyi in JS for testing
Denis
О, круто, спасибо!

Только что понял, что третий вариант (по второй ссылке) - это реализация второго. Там пуппетеер под капотом.
Спасибо мне что я умею читать README в проектах до конца 😉
источник

m

mkots in JS for testing
Oleksandr Khotemskyi
> cypress-react-unit-test


// mount the component under test
   cy.mount(<HelloState />)
   // start testing!
   cy.contains('Hello Spider-man!')
   // mounted component can be selected via its name, function, or JSX
   // e.g. '@HelloState', HelloState, or <HelloState />
   cy.get(HelloState)
     .invoke('setState', { name: 'React' })
   cy.get(HelloState)
     .its('state')
     .should('deep.equal', { name: 'React' })
   // check if GUI has rerendered
   cy.contains('Hello React!')
такс такс такс. Ты за сайпрес взялся?)
источник

OK

Oleksandr Khotemskyi in JS for testing
mkots
такс такс такс. Ты за сайпрес взялся?)
я только рядом стоял, то посоны в чат ссылку кинули
источник

OI

Oleksii Ihnatiuk in JS for testing
хаха)
источник

B

Bola in JS for testing
Первые звоночки
источник

IM

Ilya Murashka in JS for testing
jasmine.getEnv().afterEach(function () {
           allure.createStep('Https', () => {
               allure.createAttachment('http', function () {
                   return fs.readFileSync('mock/data/roleSet.json');
               }, 'application/json')();
           })();
       });

По поводу моего вчерашнего вопроса, так работает
источник

IM

Ilya Murashka in JS for testing
прост я аутист, после функции надо было проставить ()
источник

ab

artem belikov in JS for testing
Ilya Murashka
прост я аутист, после функции надо было проставить ()
Отсталось стать перфекционистом и убрать лапшу из колбеков)
источник

IM

Ilya Murashka in JS for testing
я пока просто доволен, остольное не важно
источник

m

mkots in JS for testing
источник

m

mkots in JS for testing
Норм))
источник

OK

Oleksandr Khotemskyi in JS for testing
mkots
Норм))
Смотрю на свою распберри с 32 гигами и понимаю что сайпрес туда нельзя
источник

m

mkots in JS for testing
Да ладно тебе. Карту памяти купишь и норм)
источник

OK

Oleksandr Khotemskyi in JS for testing
mkots
Да ладно тебе. Карту памяти купишь и норм)
Сайпрес разоряет ;)
источник

B

Bola in JS for testing
mkots
Норм))
Cypress hell
источник

OK

Oleksandr Khotemskyi in JS for testing
а что это за туловина у тебя?
источник

m

mkots in JS for testing
Хз, стандартная утиль убунты 18.04
источник