Efter en ändring av koden körs en GitHub Workflow. Den validerar koden, testar koden och uppdaterar den publicerade sidan ifall valideringen och testerna gått igenom samt testar ifall den publicerade sidan fungerar som den ska.
Nedan finns steg för steg hur det fungerar:
En GitHub action validerar alla CSS- och HTML-filer i mappen src/
och avslutar sedan med ett pass eller fail.
Sidan startas lokalt på GitHub's servrar.
För att testa hemsidan används biblioteket Selenium kombinerat med Python's inbyggda bibliotek unittest
. Selenium laddar in hemsidan på den lokala servern (se {REPO_DIR}/tests/test_website.py
för innehållet av skriptet) och kör tester av innehållet på hemsidan i form av unit tests.
Pythonskriptet returnerar om testerna har gått igenom med ett fail eller pass.
För att den nya sidan ska publiceras måste Steg 1
och Steg 2
passera. Om testerna godkänns körs den sista action som tar all källkod i src/
och skapar en ny branch gh-pages
(om branchen inte redan finns).
När GitHub känner av att gh-pages
branchen uppdateras startar den en publicering av den nya hemsidan.
När hemsidan har publicerats i steg 3
körs samma tester som i steg 2
på den publicerade hemsidan. Detta för att se att den lyckades publicera och att allt innehåll finns med.
Skulle det installeras nya bibliotek, alternativt att befintliga bibliotek uppdateras behöver tests_requirements.txt
uppdateras. Detta gör man lättast genom att använda pipreqs för att generera en fil med de bibliotek och versionsnummer som behövs.
För att installera de bibliotek som krävs skriver man python -m pip install -r tests_requirements.txt
.
Kör tester lokalt genom att navigera till {REPO_DIR}/tests/
i terminalen och köra test_website.py
med Python (för att testerna ska kunna köras krävs att du har firefox
installerat).
Utdrag från tests_requirements.txt
:
selenium==4.4.3
webdriver_manager==3.8.3
- Fyra mellanrum per tab
- Bara gemener för element och attributes i HTML
- Skriv all CSS i ett eget stylesheetdokument
- Variabelnamn:
- snake_case ( eg hello_world_test_variabel )
- Klassnamn:
- pascal case ( eg HelloWorldTestClass )
- CSS klass och IDn:
- pascal case ( eg HelloWorldTestClass )
- Markdown filer
- YAML för GitHub workflows
- Frontend:
- Html, css
- Python
- Korrekt innehåll
- 50% > av närvarande måste godkänna och förstå
- Koden incheckad och klar på GitHub
- Kommentarer klara
- Dokumentation
- Tester klara och koden klarar testerna
- Redo för presentation
- En färdig produkt:
- Det ska funka.
- Inga felmeddelanden.
- Inga kompileringsfel.
- användbart gränssnitt.