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
awaitexpect(awaitpage.getByText('another note by playwright')).toBeVisible()
566
565
})
567
566
568
567
test('it can be made important', async ({ page }) => {
@@ -761,18 +760,18 @@ API:n läpi tapahtuva kirjautuminen tehdään tuttuun tapaan parametrina saatava
761
760
762
761
Jos ja kun sovellukselle kirjoitetaan lisää testejä, joudutaan kirjautumisen hoitavaa koodia soveltamaan useassa paikassa. Koodi kannattaakin eristää apufunktioksi, joka sijoitetaan esim. tiedostoon _tests/helper.js_:
763
762
764
-
Komennot määritellään tiedostoon <i>cypress/support/commands.js</i>. Kirjautumisen tekevä komento näyttää seuraavalta:
test('it can be made important', async ({ page }) => {
824
822
// ...
825
823
})
826
824
})
827
825
})
828
826
})
829
827
```
830
828
831
-
Eristetään myös muistiinpanon lisääminen omaksi komennoksi, joka tekee lisäämisen suoraan HTTP POST:lla:
829
+
Eristetään myös muistiinpanon lisääminen omaksi komennoksi, joka tekee lisäämisen suoraan HTTP POST:lla. Tiedosto _tests/helper.js_ laajenee seuraavasti:
832
830
833
831
```js
834
-
Cypress.Commands.add('createNote', ({ content, important }) => {
Komennon suoritus edellyttää, että käyttäjä on kirjaantuneena sovelluksessa ja käyttäjän tiedot talletettuna sovelluksen localStorageen.
864
+
Komennon suoritus edellyttää, että käyttäjä on kirjaantunut sovellukseen API:n kautta.
849
865
850
866
Testin alustuslohko yksinkertaistuu seuraavasti:
851
867
852
868
```js
853
-
describe('Note app', function() {
869
+
describe('Note app', () => {
854
870
// ...
855
871
856
-
describe('when logged in', function() {
857
-
it('a new note can be created', function() {
872
+
describe('when logged in', () => {
873
+
test('a new note can be created', ({ page }) => {
858
874
// ...
859
875
})
860
876
861
-
describe('and a note exists', function () {
862
-
beforeEach(function () {
863
-
// highlight-start
864
-
cy.createNote({
865
-
content:'another note cypress',
866
-
important:true
867
-
})
868
-
// highlight-end
877
+
describe('and a note exists', () => {
878
+
beforeEach(async ({ page, request }) => {
879
+
awaitcreateNote(page, request, 'another note by playwright', true) // highlight-line
869
880
})
870
881
871
-
it('it can be made important', function () {
882
+
test('it can be made important', ({ page }) => {
872
883
// ...
873
884
})
874
885
})
875
886
})
876
887
})
877
888
```
878
889
879
-
Testeissämme on vielä eräs ikävä piirre. Sovelluksen osoite <i>http:localhost:5173</i> on kovakoodattuna moneen kohtaan.
880
-
881
-
Määritellään sovellukselle <i>baseUrl</i> Cypressin valmiiksi generoimaan [konfiguraatiotiedostoon](https://docs.cypress.io/guides/references/configuration) <i>cypress.config.js</i>:
890
+
Testeissämme on vielä eräs ikävä piirre. Sovelluksen frontendin osoite <i>http:localhost:5173</i> sekä backendin osoite <i>http:localhost:3001</i> on kovakoodattuna testeihin. Näistä oikeastaan backendin osoite on turha, sillä frontendin Vite-konfiguraatioon on määritelty proxy, joka forwardoi kaikki osoitteeseen <i>http:localhost:5173/api</i> menevät frontendin tekemät pyynnöt backendiin:
882
891
883
892
```js
884
-
const { defineConfig } =require("cypress")
885
-
886
-
module.exports=defineConfig({
887
-
e2e: {
888
-
setupNodeEvents(on, config) {
889
-
},
890
-
baseUrl:'http://localhost:5173'// highlight-line
893
+
exportdefaultdefineConfig({
894
+
server: {
895
+
proxy: {
896
+
'/api': {
897
+
target:'http://localhost:3001',
898
+
changeOrigin:true,
899
+
},
900
+
}
891
901
},
902
+
// ...
892
903
})
893
904
```
894
905
895
-
Kaikki testeissä olevat sovelluksen osoitetta käyttävät komennot
906
+
Voimme siis korvata testeissä kaikki osoitteet _http://localhost:3001/api/..._ osoitteella _http://localhost:5173/api/..._
Testit ja frontendin koodi on kokonaisuudessaan [GitHubissa](https://github.com/fullstack-hy2020/part2-notes-frontend/tree/part5-10), branchissa <i>part5-10</i>.
0 commit comments