diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2021-09-19 02:23:12 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-09-19 02:23:12 +0900 |
| commit | 54e0a7f8a8d977c7befc255cc4950a86ac2e72fb (patch) | |
| tree | 037bf47ed77a983ec51e6bc85134974e4433fd88 /cypress | |
| parent | fix style (diff) | |
| download | sharkey-54e0a7f8a8d977c7befc255cc4950a86ac2e72fb.tar.gz sharkey-54e0a7f8a8d977c7befc255cc4950a86ac2e72fb.tar.bz2 sharkey-54e0a7f8a8d977c7befc255cc4950a86ac2e72fb.zip | |
feat: 凍結された場合のダイアログを実装 (#7811)
* feat: 凍結された場合のダイアログを実装
* Update CHANGELOG.md
* Update basic.js
* improve error handling
* cypressなんもわからん
* Update basic.js
Diffstat (limited to 'cypress')
| -rw-r--r-- | cypress/integration/basic.js | 136 |
1 files changed, 108 insertions, 28 deletions
diff --git a/cypress/integration/basic.js b/cypress/integration/basic.js index 69d59bc2c6..52bcdb58d0 100644 --- a/cypress/integration/basic.js +++ b/cypress/integration/basic.js @@ -1,12 +1,18 @@ describe('Basic', () => { - before(() => { - cy.request('POST', '/api/reset-db'); - }); - beforeEach(() => { + cy.request('POST', '/api/reset-db').as('reset'); + cy.get('@reset').its('status').should('equal', 204); + cy.clearLocalStorage(); + cy.clearCookies(); cy.reload(true); }); + afterEach(() => { + // テスト終了直前にページ遷移するようなテストケース(例えばアカウント作成)だと、たぶんCypressのバグでブラウザの内容が次のテストケースに引き継がれてしまう(例えばアカウントが作成し終わった段階からテストが始まる)。 + // waitを入れることでそれを防止できる + cy.wait(1000); + }); + it('successfully loads', () => { cy.visit('/'); }); @@ -14,56 +20,130 @@ describe('Basic', () => { it('setup instance', () => { cy.visit('/'); + cy.intercept('POST', '/api/admin/accounts/create').as('signup'); + cy.get('[data-cy-admin-username] input').type('admin'); - cy.get('[data-cy-admin-password] input').type('admin1234'); - cy.get('[data-cy-admin-ok]').click(); + + // なぜか動かない + //cy.wait('@signup').should('have.property', 'response.statusCode'); + cy.wait('@signup'); }); it('signup', () => { - cy.visit('/'); + // インスタンス初期セットアップ + cy.request('POST', '/api/admin/accounts/create', { + username: 'admin', + password: 'pass', + }).as('setup'); - cy.get('[data-cy-signup]').click(); + cy.get('@setup').then(() => { + cy.visit('/'); - cy.get('[data-cy-signup-username] input').type('alice'); + cy.intercept('POST', '/api/signup').as('signup'); - cy.get('[data-cy-signup-password] input').type('alice1234'); - - cy.get('[data-cy-signup-password-retype] input').type('alice1234'); + 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.get('[data-cy-signup-submit]').click(); + cy.wait('@signup'); + }); }); it('signin', () => { - cy.visit('/'); + // インスタンス初期セットアップ + cy.request('POST', '/api/admin/accounts/create', { + username: 'admin', + password: 'pass', + }).as('setup'); - cy.get('[data-cy-signin]').click(); + cy.get('@setup').then(() => { + // ユーザー作成 + cy.request('POST', '/api/signup', { + username: 'alice', + password: 'alice1234', + }).as('signup'); + }); - cy.get('[data-cy-signin-username] input').type('alice'); + cy.get('@signup').then(() => { + cy.visit('/'); - // Enterキーでサインインできるかの確認も兼ねる - cy.get('[data-cy-signin-password] input').type('alice1234{enter}'); + cy.intercept('POST', '/api/signin').as('signin'); + + 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('note', () => { cy.visit('/'); - //#region TODO: この辺はUI操作ではなくAPI操作でログインする - cy.get('[data-cy-signin]').click(); + // インスタンス初期セットアップ + 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('[data-cy-signin-username] input').type('alice'); + cy.get('@signup').then(() => { + cy.visit('/'); - // Enterキーでサインインできるかの確認も兼ねる - cy.get('[data-cy-signin-password] input').type('alice1234{enter}'); - //#endregion + cy.intercept('POST', '/api/signin').as('signin'); - cy.get('[data-cy-open-post-form]').click(); + 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.get('[data-cy-post-form-text]').type('Hello, Misskey!'); + cy.wait('@signin').as('signinEnd'); + }); - cy.get('[data-cy-open-post-form-submit]').click(); + 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(); - // TODO: 投稿した文字列が画面内にあるか(=タイムラインに流れてきたか)のテスト + cy.contains('Hello, Misskey!'); + }); }); + + it('suspend', function() { + cy.request('POST', '/api/admin/accounts/create', { + username: 'admin', + password: 'pass', + }).its('body').as('admin'); + + cy.request('POST', '/api/signup', { + username: 'alice', + password: 'pass', + }).its('body').as('alice'); + + cy.then(() => { + 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('アカウントが凍結されています'); + }); + }); }); |