summaryrefslogtreecommitdiff
path: root/cypress
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2021-09-19 14:27:16 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2021-09-19 14:27:16 +0900
commit8a0a46b1c98de86cdae4b50cad4c9b36b21b0027 (patch)
tree87e445846e56f94ad638ac29241dba8c9218abd5 /cypress
parentrefactor (diff)
downloadmisskey-8a0a46b1c98de86cdae4b50cad4c9b36b21b0027.tar.gz
misskey-8a0a46b1c98de86cdae4b50cad4c9b36b21b0027.tar.bz2
misskey-8a0a46b1c98de86cdae4b50cad4c9b36b21b0027.zip
test: improve e2e test
Diffstat (limited to 'cypress')
-rw-r--r--cypress/integration/basic.js168
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!');
+ });
});