Browser-kirjaston asennus ja ongelmat
Typoja materiaalissa
Tee korjausehdotus editoimalla tätä tiedostoa GitHubissa.
Kurssin selainta käyttävät Robot-testit tehdään Robot Frameworkin Browser-kirjastolla, joka perustuu Playwright-työkaluun. Erillisiä selainajureita ei tarvita.
Asennus
Tehtäväpohjien riippuvuuksina ovat paketit robotframework-browser ja robotframework-browser-batteries. Jälkimmäinen sisältää kirjaston tarvitseman Node.js-ajoympäristön, joten Node.js:ää ei tarvitse asentaa erikseen. Riippuvuudet asentuvat normaaliin tapaan komennolla uv sync.
Testien käyttämä selain asennetaan projektin hakemistossa komennolla
uv run rfbrowser install chromium
Selain asentuu projektin virtuaaliympäristön sisälle. Asennus on siis tehtävä jokaiselle projektille erikseen, ja uudelleen, jos hakemisto .venv poistetaan tai Browser-kirjasto päivitetään.
Testit käyttävät Playwrightin omaa Chromium-selainta, eivät koneelle mahdollisesti asennettua Chromea. Halutessasi voit käyttää myös Firefoxia tai WebKitiä (Safarin selainmoottori):
uv run rfbrowser install firefox
robot --variable BROWSER:firefox src/tests
Huom: komentoa rfbrowser init ei tule käyttää, sillä se on tarkoitettu tilanteeseen, jossa Node.js on asennettu erikseen ilman robotframework-browser-batteries-pakettia.
Linux ja WSL
Linuxilla (ja Windowsin WSL:ssä) selain saattaa tarvita käyttöjärjestelmän kirjastoja, joita koneelta ei löydy. Ne saa asennettua samalla komennolla lisäämällä valitsimen --with-deps:
uv run rfbrowser install --with-deps chromium
Komento asentaa kirjastot käyttöjärjestelmän pakettienhallinnalla, joten se kysyy pääkäyttäjän salasanaa.
Windows 11:n WSL2 osaa näyttää myös graafisia sovelluksia, joten testejä suorittavan selaimen ikkunan pitäisi näkyä. Jos ikkuna ei aukea, suorita testit headless-tilassa, ks. viikon 3 tehtävä 4.
Mahdollisia ongelmia
Selainta ei ole asennettu
Seuraava virheilmoitus kertoo, että testien käyttämää selainta ei ole asennettu:
Suite setup failed:
Error: browserType.launch: Executable doesn't exist at .../chromium_headless_shell-1243/chrome-headless-shell-mac-arm64/chrome-headless-shell
╔════════════════════════════════════════════════════════════╗
║ Looks like Playwright was just installed or updated. ║
║ Please run the following command to download new browsers: ║
║ ║
║ npx playwright install ║
║ ║
║ <3 Playwright Team ║
╚════════════════════════════════════════════════════════════╝
Virheilmoituksen ehdottamaa npx-komentoa ei tarvita, vaan selain asennetaan komennolla uv run rfbrowser install chromium.
Sovellus ei ole päällä
Seuraava virheilmoitus kertoo siitä, että suoritat testejä ilman että sovellus on päällä:
At start the counter is zero | FAIL |
Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:5001/
Call log:
- navigating to "http://localhost:5001/", waiting until "load"
Testit siis olettavat, että sovellus on käynnissä. Käynnistä siis sovellus yhteen terminaaliin, avaa uusi ja suorita testit siellä.
Testi epäonnistuu, vaikka sovellus toimii
Jos testi epäonnistuu, vaikka sovellus toimii selaimella testattaessa oikein, tarkista testien suorituksen jälkeen syntyvä raportti log.html. Browser-kirjasto ottaa epäonnistumisen hetkellä kuvakaappauksen, joka näkyy raportissa ja tallentuu hakemistoon browser/screenshot. Usein ongelma on selektorissa, joka ei löydä haluttua elementtiä. Selektoreista lisää täällä.