diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2021-09-19 14:27:16 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2021-09-19 14:27:16 +0900 |
| commit | 8a0a46b1c98de86cdae4b50cad4c9b36b21b0027 (patch) | |
| tree | 87e445846e56f94ad638ac29241dba8c9218abd5 /cypress | |
| parent | refactor (diff) | |
| download | misskey-8a0a46b1c98de86cdae4b50cad4c9b36b21b0027.tar.gz misskey-8a0a46b1c98de86cdae4b50cad4c9b36b21b0027.tar.bz2 misskey-8a0a46b1c98de86cdae4b50cad4c9b36b21b0027.zip | |
test: improve e2e test
Diffstat (limited to 'cypress')
| -rw-r--r-- | cypress/integration/basic.js | 168 |
1 files changed, 103 insertions, 65 deletions
diff --git a/cypress/integration/basic.js b/cypress/integration/basic.js index fefc64baa0..182f70ff68 100644 --- a/cypress/integration/basic.js +++ b/cypress/integration/basic.js @@ -1,4 +1,4 @@ -describe('Basic', () => { +describe('Before setup instance', () => { beforeEach(() => { cy.request('POST', '/api/reset-db').as('reset'); cy.get('@reset').its('status').should('equal', 204); @@ -28,97 +28,116 @@ describe('Basic', () => { //cy.wait('@signup').should('have.property', 'response.statusCode'); cy.wait('@signup'); }); +}); + +describe('After setup instance', () => { + beforeEach(() => { + cy.request('POST', '/api/reset-db').as('reset'); + cy.get('@reset').its('status').should('equal', 204); + cy.reload(true); - it('signup', () => { // インスタンス初期セットアップ cy.request('POST', '/api/admin/accounts/create', { username: 'admin', password: 'pass', - }).as('setup'); - - cy.get('@setup').then(() => { - cy.visit('/'); + }).its('body').as('admin'); - cy.intercept('POST', '/api/signup').as('signup'); + cy.get('@admin'); + }); - cy.get('[data-cy-signup]').click(); - cy.get('[data-cy-signup-username] input').type('alice'); - cy.get('[data-cy-signup-password] input').type('alice1234'); - cy.get('[data-cy-signup-password-retype] input').type('alice1234'); - cy.get('[data-cy-signup-submit]').click(); + afterEach(() => { + // テスト終了直前にページ遷移するようなテストケース(例えばアカウント作成)だと、たぶんCypressのバグでブラウザの内容が次のテストケースに引き継がれてしまう(例えばアカウントが作成し終わった段階からテストが始まる)。 + // waitを入れることでそれを防止できる + cy.wait(1000); + }); - cy.wait('@signup'); - }); + it('successfully loads', () => { + cy.visit('/'); }); - it('signin', () => { - // インスタンス初期セットアップ - cy.request('POST', '/api/admin/accounts/create', { - username: 'admin', - password: 'pass', - }).as('setup'); - - cy.get('@setup').then(() => { - // ユーザー作成 - cy.request('POST', '/api/signup', { - username: 'alice', - password: 'alice1234', - }).as('signup'); - }); - - cy.get('@signup').then(() => { - cy.visit('/'); + it('signup', () => { + cy.visit('/'); - cy.intercept('POST', '/api/signin').as('signin'); + cy.intercept('POST', '/api/signup').as('signup'); - cy.get('[data-cy-signin]').click(); - cy.get('[data-cy-signin-username] input').type('alice'); - // Enterキーでサインインできるかの確認も兼ねる - cy.get('[data-cy-signin-password] input').type('alice1234{enter}'); + cy.get('[data-cy-signup]').click(); + cy.get('[data-cy-signup-username] input').type('alice'); + cy.get('[data-cy-signup-password] input').type('alice1234'); + cy.get('[data-cy-signup-password-retype] input').type('alice1234'); + cy.get('[data-cy-signup-submit]').click(); - cy.wait('@signin'); - }); + cy.wait('@signup'); }); +}); - it('note', () => { - cy.visit('/'); +describe('After user signup', () => { + beforeEach(() => { + cy.request('POST', '/api/reset-db').as('reset'); + cy.get('@reset').its('status').should('equal', 204); + cy.reload(true); // インスタンス初期セットアップ cy.request('POST', '/api/admin/accounts/create', { username: 'admin', password: 'pass', - }).as('setup'); + }).its('body').as('admin'); - cy.get('@setup').then(() => { + cy.get('@admin').then(() => { // ユーザー作成 cy.request('POST', '/api/signup', { username: 'alice', password: 'alice1234', - }).as('signup'); + }).its('body').as('alice'); }); - cy.get('@signup').then(() => { - cy.visit('/'); + cy.get('@alice'); + }); - cy.intercept('POST', '/api/signin').as('signin'); + afterEach(() => { + // テスト終了直前にページ遷移するようなテストケース(例えばアカウント作成)だと、たぶんCypressのバグでブラウザの内容が次のテストケースに引き継がれてしまう(例えばアカウントが作成し終わった段階からテストが始まる)。 + // waitを入れることでそれを防止できる + cy.wait(1000); + }); - cy.get('[data-cy-signin]').click(); - cy.get('[data-cy-signin-username] input').type('alice'); - cy.get('[data-cy-signin-password] input').type('alice1234{enter}'); + it('successfully loads', () => { + cy.visit('/'); + }); - cy.wait('@signin').as('signinEnd'); - }); + it('signin', () => { + cy.visit('/'); - cy.get('@signinEnd').then(() => { - cy.get('[data-cy-open-post-form]').click(); - cy.get('[data-cy-post-form-text]').type('Hello, Misskey!'); - cy.get('[data-cy-open-post-form-submit]').click(); + cy.intercept('POST', '/api/signin').as('signin'); - cy.contains('Hello, Misskey!'); - }); + cy.get('[data-cy-signin]').click(); + cy.get('[data-cy-signin-username] input').type('alice'); + // Enterキーでサインインできるかの確認も兼ねる + cy.get('[data-cy-signin-password] input').type('alice1234{enter}'); + + cy.wait('@signin'); }); it('suspend', function() { + cy.request('POST', '/api/admin/suspend-user', { + i: this.admin.token, + userId: this.alice.id, + }); + + cy.visit('/'); + + cy.get('[data-cy-signin]').click(); + cy.get('[data-cy-signin-username] input').type('alice'); + cy.get('[data-cy-signin-password] input').type('alice1234{enter}'); + + cy.contains('アカウントが凍結されています'); + }); +}); + +describe('After user singed in', () => { + beforeEach(() => { + cy.request('POST', '/api/reset-db').as('reset'); + cy.get('@reset').its('status').should('equal', 204); + cy.reload(true); + // インスタンス初期セットアップ cy.request('POST', '/api/admin/accounts/create', { username: 'admin', @@ -134,18 +153,37 @@ describe('Basic', () => { }); cy.get('@alice').then(() => { - cy.request('POST', '/api/admin/suspend-user', { - i: this.admin.token, - userId: this.alice.id, - }); - cy.visit('/'); - + + cy.intercept('POST', '/api/signin').as('signin'); + cy.get('[data-cy-signin]').click(); cy.get('[data-cy-signin-username] input').type('alice'); cy.get('[data-cy-signin-password] input').type('alice1234{enter}'); - - cy.contains('アカウントが凍結されています'); + + cy.wait('@signin').as('signedIn'); }); + + cy.get('@signedIn'); }); + + afterEach(() => { + // テスト終了直前にページ遷移するようなテストケース(例えばアカウント作成)だと、たぶんCypressのバグでブラウザの内容が次のテストケースに引き継がれてしまう(例えばアカウントが作成し終わった段階からテストが始まる)。 + // waitを入れることでそれを防止できる + cy.wait(1000); + }); + + it('successfully loads', () => { + cy.visit('/'); + }); + + it('note', () => { + cy.visit('/'); + + cy.get('[data-cy-open-post-form]').click(); + cy.get('[data-cy-post-form-text]').type('Hello, Misskey!'); + cy.get('[data-cy-open-post-form-submit]').click(); + + cy.contains('Hello, Misskey!'); + }); }); |