• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Unit testy komponentów Reactowych w Cypress [React]

VPS Starter Arubacloud
+1 głos
196 wizyt
pytanie zadane 23 maja 2022 w JavaScript przez Oskar Szkurłat Bywalec (2,780 p.)
edycja 23 maja 2022 przez Oskar Szkurłat

Cześć, mam problem z konfiguracją Cypress. Chciałbym mieć, tak że w aplikacji mam dwa rodzaje "unit" testów (JEST do testów funkcyjnych, a Cypress do unit testów Reactowych komponentów). Końcówkę `.test` zarezerwuję dla JEST, a `.spec` dla Cypress. End-To-End w oparciu o Cypress.

No i to póki co działa, tylko że nie chciałbym trzymać testów jednostkowych w `cypress/integration`, tylko przy testowanych komponentach, np. `src/components/common/TablePattern/`. Natomiast testy End-To-End mogą zostać sobie w `cypress/integration`. Napisałem już pierwszy e2e test i jest on widoczny (jest w `integration`) i działa - `1-login-module / login-module.spec.ts`.

Cypress

Problem jednak jest taki, że to moja pierwsza styczność z Cypress w życiu, więc zarówno z jego konfiguracją. Ustawiłem sobie `cypress.json` w następujący sposób:

{
  "baseUrl": "http://localhost:3000",
  "testFiles": "**/*.spec.{js,ts,jsx,tsx}",
  "component": {
    "componentFolder": "src/components",
    "testFiles": ".**/.*spec.tsx",
  }
}

Pluginy zostały skonfigurowane dla CRA. Tu początkowo występował problem cypress Error: Cannot find module 'react-scripts/package.json' , ale po zainstalowaniu "react-scripts": "^5.0.1" znikł.

// cypress/plugins/index.js

const injectDevServer = require('@cypress/react/plugins/react-scripts')

module.exports = (on, config) => {
  injectDevServer(on, config)

  return config
}

No i niestety nie widzi mi testów komponentów, a starałem się to ustawić zgodnie z dokumentacją.

Folder z testem

Aplikacja tworzona była z pomocą CRA, a potem była potraktowana `eject` (dla obsługi .less). Webpack nie był ruszany poza dodaniem obsługi .less i .module.less

"@cypress/react": "^5.12.5",
"@cypress/webpack-dev-server": "^1.8.4",
"cypress": "^9.6.1",

Czy ktoś jest w stanie mi wskazać, co zrobiłem nie tak? :( Z góry dziękuję

1 odpowiedź

+1 głos
odpowiedź 23 maja 2022 przez Oskar Szkurłat Bywalec (2,780 p.)

Pozwolę sobie sam odpowiedzieć - jest różnica między npx cypress open, a npx cypress open-ct. CT służy do testów komponentów :_: dlatego nie widziałem

    "jest": "node scripts/test.js --testMatch '**/*.test.{js,jsx,ts,tsx}'",
    "test-func": "node scripts/test.js --testMatch '**/*.test.{js,jsx,ts,tsx}' --watchAll",
    "test-unit": "npx cypress run-ct",
    "test-e2e": "npx cypress run",
    "cy:open": "npx cypress open",
    "cy:ct": "npx cypress open-ct",

Za to teraz problem, że webpack v5 nie działa z cypress open-ct, eh. Utyka na Your tests are loading :(

Podobne pytania

0 głosów
2 odpowiedzi 316 wizyt
pytanie zadane 26 kwietnia 2022 w JavaScript przez Bakkit Dyskutant (7,600 p.)
+1 głos
1 odpowiedź 189 wizyt
+2 głosów
0 odpowiedzi 265 wizyt
pytanie zadane 3 grudnia 2021 w JavaScript przez lzrd Nowicjusz (160 p.)

92,969 zapytań

141,933 odpowiedzi

321,165 komentarzy

62,299 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...