Skip to content

Commit 8a39457

Browse files
committed
part5 playwright tweaks
1 parent 5f836b8 commit 8a39457

File tree

2 files changed

+39
-50
lines changed

2 files changed

+39
-50
lines changed

src/content/5/fi/osa5e.md

Lines changed: 39 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,7 @@ npm init playwright@latest
2525

2626
Asennusskripti kysyy muutamaa kysymystä, vastataan niihin seuraavasti:
2727

28-
```
29-
$ npm init playwright@latest
30-
Getting started with writing end-to-end tests with Playwright:
31-
Initializing project in '.'
32-
✔ Do you want to use TypeScript or JavaScript? · JavaScript
33-
✔ Where to put your end-to-end tests? · tests
34-
✔ Add a GitHub Actions workflow? (y/N) · false
35-
✔ Install Playwright browsers (can be done manually via 'npx playwright install')? (Y/n) · true
36-
```
28+
![vastataan: javascript, tests, false, true](../../images/5/play0.png)
3729

3830
Määritellään npm-skripti testien suorittamista sekä testiraportteja varten
3931
```js
@@ -1113,32 +1105,41 @@ Testien lopullinen versio on kokonaisuudessaan [GitHubissa](https://github.com/f
11131105
11141106
### Tehtävät 5.17.-5.23.
11151107
1116-
Tehdään osan lopuksi muutamia E2E-testejä blogisovellukseen. Yllä olevan materiaalin pitäisi riittää ainakin suurimmaksi osaksi tehtävien tekemiseen. Cypressin [dokumentaatiota](https://docs.cypress.io/guides/overview/why-cypress.html#In-a-nutshell) kannattaa ehdottomasti myös lueskella, kyseessä on ehkä paras dokumentaatio, mitä olen koskaan open source ‑projektissa nähnyt.
1117-
1118-
Erityisesti kannattaa lukea luku [Introduction to Cypress](https://docs.cypress.io/guides/core-concepts/introduction-to-cypress.html#Cypress-Can-Be-Simple-Sometimes), joka toteaa
1119-
1120-
> <i>This is the single most important guide for understanding how to test with Cypress. Read it. Understand it.</i>
1108+
Tehdään osan lopuksi muutamia E2E-testejä blogisovellukseen. Yllä olevan materiaalin pitäisi riittää suurimman osan tehtävien tekemiseen. Playwrightin [dokumentaatiota]https://playwright.dev/docs/intro) ja [API-kuvausta](https://playwright.dev/docs/api/class-playwright) kannattaa ehdottomasti lukea, ainakin edellisessä luvussa mainitut osat.
11211109
11221110
#### 5.17: blogilistan end to end ‑testit, step1
11231111
1124-
Konfiguroi Cypress projektiisi. Tee testi, joka varmistaa, että sovellus näyttää oletusarvoisesti kirjautumislomakkeen.
1112+
Tee uusi npm-projekti testejä varten ja konfiguroi sinne Playwright.
1113+
1114+
Tee testi, joka varmistaa, että sovellus näyttää oletusarvoisesti kirjautumislomakkeen.
11251115
11261116
Testin rungon tulee olla seuraavanlainen
11271117
11281118
```js
1129-
describe('Blog app', function() {
1130-
beforeEach(function() {
1131-
cy.request('POST', 'http://localhost:3003/api/testing/reset')
1132-
cy.visit('http://localhost:5173')
1119+
const { test, expect, beforeEach, describe } = require('@playwright/test')
1120+
1121+
describe('Note app', () => {
1122+
beforeEach(async ({ page, request }) => {
1123+
await request.post('http:localhost:3003/api/testing/reset')
1124+
await request.post('http://localhost:3003/api/users', {
1125+
data: {
1126+
name: 'Matti Luukkainen',
1127+
username: 'mluukkai',
1128+
password: 'salainen'
1129+
}
1130+
})
1131+
1132+
await page.goto('http://localhost:5173')
11331133
})
11341134

1135-
it('Login form is shown', function() {
1135+
test('Login form is shown', async ({ page }) => {
11361136
// ...
11371137
})
11381138
})
1139+
11391140
```
11401141
1141-
Testin <i>beforeEach</i>-alustuslohkon tulee nollata tietokannan tilanne esim. [materiaalissa](/osa5/end_to_end_testaus#tietokannan-tilan-kontrollointi) näytetyllä tavalla.
1142+
Testin <i>beforeEach</i>-alustuslohkon tulee nollata tietokannan tilanne esim. [materiaalissa](/osa5/end_to_end_testaus_playwright#testien-alustus) näytetyllä tavalla.
11421143
11431144
#### 5.18: blogilistan end to end ‑testit, step2
11441145
@@ -1147,23 +1148,23 @@ Tee testit kirjautumiselle, testaa sekä onnistunut että epäonnistunut kirjaut
11471148
Testien runko laajenee seuraavasti
11481149
11491150
```js
1150-
describe('Blog app', function() {
1151-
beforeEach(function() {
1152-
cy.request('POST', 'http://localhost:3003/api/testing/reset')
1153-
// create here a user to backend
1154-
cy.visit('http://localhost:5173')
1151+
const { test, expect, beforeEach, describe } = require('@playwright/test')
1152+
1153+
describe('Note app', () => {
1154+
beforeEach(async ({ page, request }) => {
1155+
// ...
11551156
})
11561157

1157-
it('Login form is shown', function() {
1158+
test('Login form is shown', async ({ page }) => {
11581159
// ...
11591160
})
11601161

1161-
describe('Login',function() {
1162-
it('succeeds with correct credentials', function() {
1162+
describe('Login', () => {
1163+
test('succeeds with correct credentials', async ({ page }) => {
11631164
// ...
11641165
})
11651166

1166-
it('fails with wrong credentials', function() {
1167+
test('fails with wrong credentials', async ({ page }) => {
11671168
// ...
11681169
})
11691170
})
@@ -1175,19 +1176,14 @@ describe('Blog app', function() {
11751176
Tee testi, joka varmistaa, että kirjautunut käyttäjä pystyy luomaan blogin. Testin runko voi näyttää seuraavalta
11761177
11771178
```js
1178-
describe('Blog app', function() {
1179-
// ...
1180-
1181-
describe('When logged in', function() {
1182-
beforeEach(function() {
1183-
// log in user here
1184-
})
1185-
1186-
it('A blog can be created', function() {
1187-
// ...
1188-
})
1179+
describe('When logged in', () => {
1180+
beforeEach(async ({ page }) => {
1181+
// ...
11891182
})
11901183

1184+
test('a new blog can be created', async ({ page }) => {
1185+
// ...
1186+
})
11911187
})
11921188
```
11931189
@@ -1199,7 +1195,7 @@ Tee testi, joka varmistaa, että blogia voi likettää.
11991195
12001196
#### 5.21: blogilistan end to end ‑testit, step5
12011197
1202-
Tee testi, joka varmistaa, että blogin lisännyt käyttäjä voi poistaa blogin.
1198+
Tee testi, joka varmistaa, että blogin lisännyt käyttäjä voi poistaa blogin. Jos käytät poisto-operaation yhteydessä _window.confirm_-dialogia, saatat joutua hieman etsimään miten dialogin käyttö tapahtuu Playwright-testeistä käsin.
12031199
12041200
#### 5.22: blogilistan end to end ‑testit, step6
12051201
@@ -1209,14 +1205,7 @@ Tee testi, joka varmista, että vain blogin lisännyt käyttäjä näkee blogin
12091205
12101206
Tee testi, joka varmistaa, että blogit järjestetään likejen mukaiseen järjestykseen, eniten likejä saanut blogi ensin.
12111207
1212-
<i>Tämä tehtävä on edellisiä huomattavasti haastavampi.</i> Eräs ratkaisutapa on lisätä tietty luokka elementille, joka sisältää blogin sisällön ja käyttää [eq](https://docs.cypress.io/api/commands/eq#Syntax)-metodia tietyssä indeksissä olevan elementin hakemiseen:
1213-
1214-
```js
1215-
cy.get('.blog').eq(0).should('contain', 'The title with the most likes')
1216-
cy.get('.blog').eq(1).should('contain', 'The title with the second most likes')
1217-
```
1218-
1219-
Saatat törmätä tässä tehtävässä ongelmaan jos klikkaat monta kertaa peräkkäin <i>like</i>-nappia. Saattaa olla, että näin tehdessä liketykset tehdään samalle oliolle, eli Cypress ei "ehdi" välissä päivittää sovelluksen tilaa. Eräs tapa korjata ongelma on odottaa jokaisen klikkauksen jälkeen että likejen lukumäärä päivittyy ja tehdä uusi liketys vasta tämän jälkeen.
1208+
<i>Tämä tehtävä on edellisiä huomattavasti haastavampi.</i>
12201209
12211210
Tämä oli osan viimeinen tehtävä ja on aika pushata koodi GitHubiin sekä merkata tehdyt tehtävät [palautussovellukseen](https://studies.cs.helsinki.fi/stats/courses/fullstackopen).
12221211

src/content/images/5/play0.png

64.8 KB
Loading

0 commit comments

Comments
 (0)