Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Automatyczne testy front-endu #741

Closed
ad-m opened this issue Sep 30, 2019 · 12 comments · Fixed by #941
Closed

Automatyczne testy front-endu #741

ad-m opened this issue Sep 30, 2019 · 12 comments · Fixed by #941
Assignees

Comments

@ad-m
Copy link
Member

ad-m commented Sep 30, 2019

Mamy szereg zależności od front-endu, które nie są aktualne ( https://github.com/watchdogpolska/poradnia/pulls?q=is%3Apr+is%3Aopen+label%3Ajavascript ). Mamy także nieaktualny stan projektu w repozytorium ( #729 ).

Potrzebujemy:

  • powtarzalne, wiarygodnego procesu budowania monolitycznej aplikacji django SPA, z uwzględnieniem bibliotek wymaganych przez rozszerzenia Django,
  • testów front-endu, choćby w podstawowym zakresie, abyśmy mogli spokojnie włączać aktualizacje, które mogą dotknąć front-endu.

Zaznaczę także, że mamy także problemy, których nie możemy łatwo rozwiązać tj. w czasie rzeczywistym odświeżenie listów (#518), zachowanie wiadomości po jej poprawnym zapisaniu (#562). W tym zakresie konieczna jest szersza wizja jak do tego podejść.

@ad-m
Copy link
Member Author

ad-m commented Jan 2, 2020

Ale wymaga pisania testów w Go, co nie jest zbyt efektywne długoterminowo. W przypadku sterowania przeglądarek albo mamy Selenium + geckodriver itp. z dostosowanymi przeglądarkami rozwiązania lub oparte o implementacje protokołu Chrome Dev Protocol (implementuje go Chrome, częściowo Firefox i Edge). Dla Chrome Dev Protocol istnieje kilka narzędzi, które implementuje protokół, także napisanych w Python ( https://github.com/ChromeDevTools/awesome-chrome-devtools#protocol-driver-libraries ). Czy nie będzie to lepsze rozwiązanie?

@bukowa
Copy link

bukowa commented Jan 2, 2020

Moim zdaniem nie warto ograniczać się do jednego języka, a wybierać narzędzie które najlepiej robi robote, ma dobre api i jest rozwijane. Sporo oglądałem projektów do automatyzacji przeglądarki i chromedp wygląda dla mnie najlepiej, działa od strzała w Dockerze jest szybciutki i rozwijany. Projekty pythonowe wyglądają kiepsko (przynajmniej jeśli chodzi o API). Selenium też próbowałem i dla mnie odpada, nie wiem czy ma przyszłość jeśli jest Chrome Dev Protocol. Wszystko zależy od osoby która te testy będzie pisała. Jak uważasz?

@ad-m
Copy link
Member Author

ad-m commented Jan 2, 2020

Jak ktoś napisze testy w Go, ładnie je zintegruje z projektem, udokumentuje jak je uruchomić to z chęcią taki PR przyjmę w dowolnym języku. Takie testy lepsze niż obecny stan nieprzewidywalnej aktualizacji front-endu.

@bukowa
Copy link

bukowa commented Jan 2, 2020

Czyli jakie testy to te właściwe?

@ad-m
Copy link
Member Author

ad-m commented Jan 3, 2020

W mojej ocenie potrzebujemy mieć flow, aby weryfikować w CI, że poprawki takie jak #724 , #681, #633 zachowują działanie obecnych funkcjonalności w projekcie. Jak również, że poprawnie działają biblioteki front-endu dostarczone przez biblioteki Python np. #796 . Poprawne działanie to znaczy zachowanie walorów wizualnych i funkcjonalnych.

@westscz
Copy link

westscz commented Mar 22, 2020

Wydaje mi się, że lepiej byłoby napisać te testy z wykorzystaniem Cypress. Czy są gdzieś spisane podstawowe przypadki użycia?

@ad-m
Copy link
Member Author

ad-m commented Mar 22, 2020

Nie zostały udokumentowane, ale mamy niewielką ilość JS, a w tym zakresie szczególnie testy front-endu są wymagane, zatem:

  • rejestracja
  • logowanie
  • zarejestrowanie nowej sprawy z załącznikiem,
  • dodanie listu do sprawy,
  • wyszukanie sprawy po nazwie w wyszukiwarce z opcji "Wyszukaj" z menu bocznego
  • dodanie do listu sprawy z załącznikiem i pomyślne pobranie go

Jeżeli będziemy mieli te scenariusze obsłużone to będzie dobra baza i dość bezpieczny rozwój front-endu.

@AgnieszkaZdanowicz
Copy link

@ad-m nie wiem, czy to aktualne?

@rwakulszowa
Copy link
Member

Postaram się tym zająć.
Prawdopodobnie Cypress + dedykowany plik docker-compose.test.yml będą najwygodniejszym rozwiązaniem.

@ad-m - jak wygląda sytuacja w kwestii integracji z GitHub actions? Czy jako NGO mamy dostęp do większej ilości zasobów GH? W takiej sytuacji mógłbym też dodać automatyczne wywołanie testów przy każdym PR / commicie do mastera.

@rwakulszowa rwakulszowa self-assigned this Oct 25, 2020
@ad-m
Copy link
Member Author

ad-m commented Oct 25, 2020

jak wygląda sytuacja w kwestii integracji z GitHub actions? Czy jako NGO mamy dostęp do większej ilości zasobów GH?

Jako NGO żadnych benefitów w tym zakresie, ale jako open-source nie mamy opłat za minuty, więc jak najbardziej integruj.

GitHub Actions usage is free for public repositories and self-hosted runners.
https://docs.github.com/en/free-pro-team@latest/github/setting-up-and-managing-billing-and-payments-on-github/about-billing-for-github-actions

Mam wątpliwości czy dedykowany docker-compose będzie konieczny.

W zakresie zagadnienia widzę dwa elementy:

@rwakulszowa
Copy link
Member

Z punktów wymienionych wyżej, obecnie nie testujemy jeszcze:

  • zarejestrowanie nowej sprawy z załącznikiem
  • wyszukanie sprawy po nazwie w wyszukiwarce z opcji "Wyszukaj" z menu bocznego
  • dodanie do listu sprawy z załącznikiem i pomyślne pobranie go

W kolejnym PR postaram się obsłużyć te 3 przypadki, po czym pewnie będziemy mogli zamknąć tę sprawę, a kolejne testy dodawać już na bieżąco.

Następnie będziemy mogli wdrożyć #913, zaktualizować wszystkie zależności, po czym przejść wreszcie do #889 .

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants