Zadanie domowe 2
Zmiany
15 czerwca - wyjaśnienie: powinna być jedna aplikacja (serwer) i ona serwuje .js i .html i .css dla użytkownika, czyli cała komunikacja "Aplikacja powinna pobierać listę quizów a następnie pojedyncze quizy z serwera WWW w postaci JSONów a następnie powinna odsyłać na ten sam serwer odpowiedzi..." ma działać podobnie do tej komunikacji np w extodo
9 czerwca - `npm run createdb` (zadanie 9)
9 czerwca - wyjaśnienie dotyczące "integracji" z zadaniem 1: zakończenie quizu powoduje przejście do widoku z wynikiem quizu, z zaznaczeniem które odpowiedzi były poprawne, informacją o karach i wyborem czy zapisać tylko wynik, czy wynik ze statystykami, użytkownik nie powinien mieć wyboru
5 czerwca - dopisek o skryptach (pkt. 8 zadania)
Termin
Do końca 21 czerwca 2020 naszego czasu.
Opis
Trzeba napisać aplikację webową, czyli serwer HTTP.
Należy przygotować mechanizm pozwalający użytkownikom logować się (login i hasło) do aplikacji z Zadania domowego 1, rozwiązywać quizy, zapisywać wyniki, przeglądać rozwiązane quizy.
Dodatkowo należy przygotować testy w Selenium.
I zmodyfikować package.json
Zadania
- Przygotuj mechanizm logowania, zmiany własnego hasła i wylogowywania ze strony. Dane użytkowników powinny być przechowywane w bazie danych Nie musisz przygotowywać mechanizmu zakładania kont.
- Po zmianie hasła sesje użytkownika, który zmienił hasło powinny być wylogowywane. Napisz test tego zachowania w Selenium. W tym celu możesz na przykład:
- zapisać ciasteczka jednej sesji,
- usunąć je z przeglądarki,
- stworzyć drugą sesję,
- zmienić hasło,
- wczytać ciasteczka z pierwszej sesji,
- sprawdzić, że jesteś wylogowany.
- Aplikacja powinna pobierać listę quizów a następnie pojedyncze quizy z serwera WWW w postaci JSONów a następnie powinna odsyłać na ten sam serwer odpowiedzi (wszystkie odpowiedzi do quizu na raz a nie pojedynczo) oraz statystyki w postaci procentowego czasu spędzonego nad konkretnym pytaniem (np. pyt1: 10%, pyt2: 30%, pyt3: 60%). Przygotuj test tego zachowania w Selenium.
- Quizy powinny być zapisane w bazie danych, nie trzeba do ich edycji przygotowywać interfejsu.
- Rozwiązania quizów powinny być oceniane po stronie serwera. Serwer powinien, w oparciu o to kiedy przesłał do przeglądarki JSONa z pytaniami oraz kiedy odebrał JSONa z odpowiedziami policzyć ile czasu zajęła użytkownikowi odpowiedź na każde z pytań.
- Nie powinno się dać dwukrotnie rozwiązać tego samego quizu, zadbaj o komunikat o błędzie. Przygotuj test tego zachowania w Selenium.
- Użytkownik powinien móc zobaczyć wyniki rozwiązanych przez siebie quizów:
- które odpowiedzi były poprawne a które nie
- jakie były poprawne odpowiedzi
- jakie są statystyki kilku najlepszych użytkowników (np. top 5), którzy już rozwiązali quiz
- ile średnio zajmuje czasu poprawna odpowiedź na każde z pytań
- Technicznie: do package.json należy dopisać skrypt, który po npm run test uruchomi testy selenium, a następnie po sobie posprząta. Należy też dodać skrypt uruchamiający. Jeśli jest potrzebny, to należy też zrobić skrypt budujący.
- Polecenie `npm run createdb` powinno utworzyć potrzebną bazę i założyć w niej dwa konta użytkowników (żeby było łatwo testować) user1/user1 i user2/user2.
Uwagi
- Program należy napisać w TypeScripcie, korzystając z expressa.