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/osa5e.md
+116-3Lines changed: 116 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -959,13 +959,126 @@ test('one of those can be made important', async ({ page }) => {
959
959
})
960
960
```
961
961
962
-
### Testien suoritus ja debuggaaminen
962
+
### Testien kehittäminen ja debuggaaminen
963
963
964
-
Lokaattorien etsiminen
964
+
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
965
+
- [lokaattoreita](https://playwright.dev/docs/locators) kertova osa antaa hyviä vihjeitä testattavien elementtien etsimiseen
966
+
- osa [actions](https://playwright.dev/docs/input) kertoo miten selaimen kanssa käytävää vuorovaikutusta on mahdollista simuloida testeissä
967
+
- [assertioista](https://playwright.dev/docs/test-assertions) kertova osa demonstroi mitä erilaisia testauksessa käytettäviä ekspektaatioita Playwright tarjoaa
965
968
966
-
VSCode
969
+
Tarkemmat detaljit löytyvät [API](https://playwright.dev/docs/api/class-playwright)-kuvauksesta, erityisen hyödyllisiä ovat testattavan sovelluksen selainikkunaa vastaavan komponentin [Page](https://playwright.dev/docs/api/class-page) kuvaus, sekä testeissä etsittyjä elementtejä vastaavan komponentin [Locator](https://playwright.dev/docs/api/class-locator)-kuvaus.
967
970
971
+
Jos/kun testit eivät mene läpi ja herää epäilys, että vika on koodin sijaan testeissä, kannattaa testejä suorittaa [debug](https://playwright.dev/docs/debug#run-in-debug-mode-1)-moodissa.
968
972
973
+
Seuraava komento suorittaa yksittäisen testin debug-moodissa:
974
+
975
+
```
976
+
npm test ----debug -g 'a new note can be created'
977
+
```
978
+
979
+
Playwright-inspector näyttää testien etenemisen askel askeleelta. Yläreunan nuoli-piste-painike vie testejä yhden askeleen eteenpäin. Lokaattorien löytämät elementit sekä selaimen kanssa käyty interaktio visualisoituvat selaimeen:
980
+
981
+

982
+
983
+
Oletusarvoisesti debugatessa askelletaan testi läpi komento komennolta. Jos on kyse monimutkaisesta testistä, voi olla melko vaivalloista askeltaa testissä kiinnostavaan kohtaan asti. Liialta askellukselta voidaan välttyä lisäämällä juuri kiinnostavaa kohtaa ennen komento _await page.pause()_:
984
+
985
+
```js
986
+
describe('Note app', () => {
987
+
beforeEach(async ({ page, request }) => {
988
+
// ...
989
+
}
990
+
991
+
describe('when logged in', () => {
992
+
beforeEach(async ({ page }) => {
993
+
// ...
994
+
})
995
+
996
+
describe('and several notes exists', () => {
997
+
beforeEach(async ({ page }) => {
998
+
awaitcreateNote(page, 'first note')
999
+
awaitcreateNote(page, 'second note')
1000
+
awaitcreateNote(page, 'third note')
1001
+
})
1002
+
1003
+
test('one of those can be made important', async ({ page }) => {
Testi menee kyllä läpi, mutta näyttää siltä, että selain ei renderöi kaikkia lohkossa _beforeEach_ luotuja muistiinpanoja. Mistä on kyse?
1045
+
1046
+
Syynä ongelmaan on se, että kun testi luo yhden muistiinpanon, se aloittaa seuraavan luomisen jo ennen kuin palvelin on vastannut, ja lisätty muistiinpano on renderöidään ruudulle. Tämä taas saattaa aiheuttaa sen, että jotain muistiinpanoja katoaa, sillä selain päivitetään palvelimen vastatessa perustuen siihen muistiinpanojen tilaan mikä kyseisen lisäysoperaation alussa oli.
1047
+
1048
+
Ongelma korjaantuu "hidastamalla" lisäysoperaatioita siten, että lisäyksen jälkeen odotetaan komennolla [waitFor](https://playwright.dev/docs/api/class-locator#locator-wait-for), että lisätty muistinpano ehditään renderöidä:
Lähes samaan tapaan kuin UI-moodi, toimii Playwrightin [Trace Viewer](https://playwright.dev/docs/trace-viewer-intro). Ideana siinä on, se että testeistä tallennetaan "visuaalinen jälki", jota voidaan tarkastella tarvittaessa testien suorituksen jälkeen. Trace tallennetaan suorittamalla testit seuraavasti:
1060
+
1061
+
```
1062
+
npm run test ----trace on
1063
+
```
1064
+
1065
+
Tracen pääsee tarvittaessa katsomaan komennolla
1066
+
1067
+
```
1068
+
npx playwright show-report
1069
+
```
1070
+
1071
+
tai määrittelemällämme npm-skriptillä _npm run test:report_
1072
+
1073
+
Trace näyttää lähes samalta kuin testien suoritus UI-moodissa:
1074
+
1075
+
1076
+
Locator
1077
+
1078
+
1079
+
Testien nauhoitus
1080
+
1081
+
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.
969
1082
970
1083
Testien lopullinen versio on kokonaisuudessaan [GitHubissa](https://github.com/fullstack-hy2020/part2-notes-frontend/tree/part5-11), branchissa <i>part5-11</i>.
0 commit comments