You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: src/content/5/fi/osa5d.md
+81-45Lines changed: 81 additions & 45 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -35,7 +35,7 @@ Jos valintasi on Playwright, jatka eteenpäin. Jos päädyt käyttämään Cypre
35
35
36
36
Kirjastojen vertailuista on kirjoitettu monia blojeja, esim. [tämä](https://www.lambdatest.com/blog/cypress-vs-playwright/) ja [tämä](https://www.browserstack.com/guide/playwright-vs-cypress).
37
37
38
-
On vaikea sanoa kumpi kirjastoista on parempi. Eräs Playwrightin etu on sen selaintuki, Playwright tukee Chromea, Firefoxia ja Webkit-pohjaisia selaimia kuten Safaria. Nykyisin Cypress sisältää tuen kaikkiin näihin selaimiin, Webkit-tuki on tosin vasta kokeellinen ja ei tue kaikkia Cypressin ominaisuuksia. Oma preferenssini kallisuu kirjoitushetkellö (29.2.2024) hieman Playwrightin puolelle.
38
+
On vaikea sanoa kumpi kirjastoista on parempi. Eräs Playwrightin etu on sen selaintuki, Playwright tukee Chromea, Firefoxia ja Webkit-pohjaisia selaimia kuten Safaria. Nykyisin Cypress sisältää tuen kaikkiin näihin selaimiin, Webkit-tuki on tosin vasta kokeellinen ja ei tue kaikkia Cypressin ominaisuuksia. Oma preferenssini kallisuu kirjoitushetkellö (1.3.2024) hieman Playwrightin puolelle.
39
39
40
40
Tutustutaan nyt Playwrightin käyttöön.
41
41
@@ -164,7 +164,7 @@ test('front page can be opened', async ({ page }) => {
164
164
165
165
constlocator=awaitpage.getByText('Notes')
166
166
awaitexpect(locator).toBeVisible()
167
-
awaitexpect(awaitpage.getByText('Note app, Department of Computer Science, University of Helsinki 2023')).toBeVisible()
167
+
awaitexpect(page.getByText('Note app, Department of Computer Science, University of Helsinki 2023')).toBeVisible()
awaitexpect(awaitpage.getByText('a note created by playwright')).toBeVisible()
452
+
awaitexpect(page.getByText('a note created by playwright')).toBeVisible()
453
453
})
454
454
})
455
455
})
@@ -469,7 +469,7 @@ Jos kenttiä olisi useampia, testi hajoaisi Tämän takia olisi jälleen parempi
469
469
**Huom:** testi ei mene läpi kuin ensimmäisellä kerralla suoritettaessa. Syynä tälle on se, että ekspektaatio
470
470
471
471
```js
472
-
awaitexpect(awaitpage.getByText('a note created by playwright')).toBeVisible()
472
+
awaitexpect(page.getByText('a note created by playwright')).toBeVisible()
473
473
```
474
474
475
475
aiheuttaa ongelmia siinä vaiheessa kun sovellukseen luodaan sama muistiinpano useammin kuin kertaalleen. Ongelmasta päästään eroon seuraavassa luvussa.
Ensimmäinen komento etsii ensin komponentin, missä on teksti <i>another note cypress</i> ja sen sisältä painikkeen <i>make not important</i> ja klikkaa sitä.
629
+
Ensimmäinen komento etsii ensin komponentin, missä on teksti <i>another note by playwright</i> ja sen sisältä painikkeen <i>make not important</i> ja klikkaa sitä.
630
630
631
631
Toinen komento varmistaa, että saman napin teksti on vaihtunut muotoon <i>make important</i>.
Testien tämänhetkinen koodi on [GitHubissa](https://github.com/fullstack-hy2020/notes-e2e/tree/part5-2), branchissa <i>part5-2</i>.
961
961
962
-
### Muistiinpanon tärkeyden muutos
962
+
### Muistiinpanon tärkeyden muutos revisited
963
+
964
+
Tarkastellaan vielä aiemmin tekemäämme testiä, joka varmistaa että muistiinpanon tärkeyttä on mahdollista muuttaa.
963
965
964
-
Tarkastellaan vielä aiemmin tekemäämme testiä, joka varmistaa että muistiinpanon tärkeyttä on mahdollista muuttaa. Muutetaan testin alustuslohkoa siten, että se luo yhden sijaan kolme muistiinpanoa:
966
+
Muutetaan testin alustuslohkoa siten, että se luo yhden sijaan kaksi muistiinpanoa:
Testi etsii nyt metodin _getByRole_ avulla toisena luodun muistiinpanoa vastaavan elementin ja tallettaa sen muuttujaan. Tämän jälkeen elementin sisältä etsitään nappi missä on teksti _make not important_ ja painetaan sitä. Lopuksi teksi varmistaa että napin teksiksi on muuttunut _make important_.
990
+
Testi etsii ensin metodin _getByRole_ avulla ensimmäisenä luotua muistiinpanoa vastaavan elementin ja tallettaa sen muuttujaan. Tämän jälkeen elementin sisältä etsitään nappi, missä on teksti _make not important_ ja painetaan nappia. Lopuksi teksi varmistaa että napin teksiksi on muuttunut _make important_.
989
991
990
992
Testi olisi voitu kirjoittaa myös ilman apumuuttujaa:
991
993
992
994
```js
993
-
test('one of those can be made important', async ({ page }) => {
994
-
awaitpage.getByText('second note').getByRole('button', { name:'make not important' }).click()
995
+
test('one of those can be made nonimportant', async ({ page }) => {
996
+
awaitpage.getByText('first note')
997
+
.getByRole('button', { name:'make not important' }).click()
Testit hajoavat! Kuten test runner paljastaa, komento _await page.getByText('second note')_ palauttaakin nyt ainoastaan tekstin sisältävän komponentin, ja nappi on sen ulkopuolella.
1017
-
1020
+
Testit hajoavat! Syynä ongelmalle on se, komento _await page.getByText('second note')_ palauttaakin nyt ainoastaan tekstin sisältävän _span_-elementin, ja nappi on sen ulkopuolella.
1018
1021
1019
1022
Eräs tapa korjata ongelma on seuraavassa:
1020
1023
1021
1024
```js
1022
-
test('one of those can be made important', async ({ page }) => {
Ensimmäinen rivi etsii nyt toiseen muistiinpanoon liittyvän tekstin sisältävän _span_-elementin. Toisella rivillä käytetään funktiota _locator_ ja annetaan parametriksi _.._, joka hakee elementin vanhempielementin. Funktio locator on hyvin joustava, ja hyödynnämme tässä sitä että se hyväksyy [parametrikseen](https://playwright.dev/docs/locators#locate-by-css-or-xpath) CSS-selektorien lisäksi myös [XPath](https://developer.mozilla.org/en-US/docs/Web/XPath)-muotoisen selektorin. Sama olisi mahdollista ilmaista myös CSS:n avulla, mutta tässä tapauksessa XPath tarjoaa yksinkertaisimman tavan elementin vanhemman etsimiseen.
1034
+
Ensimmäinen rivi etsii nyt ensimmäisenä luotuun muistiinpanoon liittyvän tekstin sisältävän _span_-elementin. Toisella rivillä käytetään funktiota _locator_ ja annetaan parametriksi _.._, joka hakee elementin vanhempielementin. Funktio locator on hyvin joustava, ja hyödynnämme tässä sitä että funktio hyväksyy [parametrikseen](https://playwright.dev/docs/locators#locate-by-css-or-xpath) CSS-selektorien lisäksi myös [XPath](https://developer.mozilla.org/en-US/docs/Web/XPath)-muotoisen selektorin. Sama olisi mahdollista ilmaista myös CSS:n avulla, mutta tässä tapauksessa XPath tarjoaa yksinkertaisimman tavan elementin vanhemman etsimiseen.
1032
1035
1033
1036
Testi voidaan toki kirjoittaa myös ainoastaan yhtä apumuuttujaa käyttäen:
1034
1037
1035
1038
```js
1036
-
test('one of those can be made important', async ({ page }) => {
1039
+
test('one of those can be made nonimportant', async ({ page }) => {
Jostain syystä testi alkaa toimia epäluotettavaksi, se menee välillä läpi ja välillä ei. On aika kääriä hihat ja opetella debuggaamaan testejä.
1078
+
1043
1079
### Testien kehittäminen ja debuggaaminen
1044
1080
1045
-
Playwright tarjoaa muutamia melki hyviä testin kehittämistä ja debuggaamista auttavia työkaluja. [Dokumentaatiota](https://playwright.dev/docs/intro) kannattaa ehdottomasti selailla, eritysen tärkeitä ovat
1081
+
Playwright tarjoaa muutamia melko hyviä testin kehittämistä ja debuggaamista auttavia työkaluja. [Dokumentaatiota](https://playwright.dev/docs/intro) kannattaa ehdottomasti selailla, eritysen tärkeitä ovat
1046
1082
- [lokaattoreita](https://playwright.dev/docs/locators) kertova osa antaa hyviä vihjeitä testattavien elementtien etsimiseen
1047
1083
- osa [actions](https://playwright.dev/docs/input) kertoo miten selaimen kanssa käytävää vuorovaikutusta on mahdollista simuloida testeissä
1048
1084
- [assertioista](https://playwright.dev/docs/test-assertions) kertova osa demonstroi mitä erilaisia testauksessa käytettäviä ekspektaatioita Playwright tarjoaa
@@ -1183,7 +1219,7 @@ Testigeneraattori _Record_-tilan päälläollessa käyttäjän interaktion Playw
1183
1219
1184
1220
Komentorivin sijaan Playwrightiä voi käyttää myös [VS Code](https://marketplace.visualstudio.com/items?itemName=ms-playwright.playwright)-pluginin kautta. Plugin tarjoaa monia käteviä ominaisuuksia, mm. breakpointien käytön testejä debugatessa.
1185
1221
1186
-
Testien lopullinen versio on kokonaisuudessaan [GitHubissa](https://github.com/fullstack-hy2020/part2-notes-frontend/tree/part5-11), branchissa <i>part5-11</i>.
1222
+
Testien lopullinen versio on kokonaisuudessaan [GitHubissa](https://github.com/fullstack-hy2020/notes-e2e/tree/part5-3), branchissa <i>part5-3</i>.
0 commit comments