Cypress會以一個獨立的軟體來呈現

End to End Testing比較注重的部分是完整的使用流程
Cypress會透過多個檔案像是cypress.config.js等去做專案的設定

目前可以在三種情況下去做測試(是額外設定的不影響原本系統上的)


可以直接透過Cypress App來產生簡易的範例

簡單修改一下產生的spec來讓測試的情況更符合現實
describe('first spec', () => {
it('main page', () => {
cy.visit('http://localhost:3000')
})
})
實際跑測試前要記得把react的專案跑起來

describe('empty spec', () => {
it('passes', () => {
cy.visit('http://localhost:3000')
})
it('post 1', () => {
cy.contains('post')
})
it('click button', () => {
cy.contains('Delete').click()
})
})

it('Perform login', () ⇒ {
// Visit ExecuteAutomation Website
cy.visit('http://eaapp.somee.com/')
// 點 navigation 的 Login
cy.contains('Login').click()
// url 要有 'Login 這個字',確定進入 login page
cy.url().should('include', 'Login')
// 輸入使用者名稱 "admin"
cy.get('#UserName').type("admin")
// 輸入密碼 "password"
cy.get("#Password").type('password')
// 按下送出按鈕
cy.get('.btn').click()
}
可以回到特定test case下的狀況

透過明確的錯誤訊息以及debug工具可以協助我們更快找到出錯原因

可以在瀏覽器的console看到更多狀態資訊

可以透過call pause來暫停目前狀況,並call debug來得到更進一步的資訊
it('post 1', () => {
cy.pause()
cy.get('Button').debug()
cy.contains('post').debug()
})
結果一樣會在console中呈現

在Source的tab也會顯示目前正停在哪

在開始設定CI前會要把前後端打包成單一的docker image
實際上會需要注意的只有要將react build好的檔案給放進image內
FROM node:16-alpine
WORKDIR /app
COPY . /app
COPY ../frontend/build /app/build
# ...
由於在Azure Devops上要跑Keycloak會過於困難,建議在打包時將相關的code給註解
要跑cypress的話只要在pipeline中新增一個task即可
Keyclaok理論上可以用npm套件或是POST的方式去新增client與user
想要正確啟用目前的專案還會需要Keycloak Server
所以在Pipeline設定新的Docker compose task,才能一起啟動多個container
steps:
- task: DockerCompose@0
displayName: Container registry login
Component Testing主要是針對部分component去測試他有沒有正常運作