test: improve e2e test
This commit is contained in:
		
							parent
							
								
									186163ec3f
								
							
						
					
					
						commit
						8a0a46b1c9
					
				
					 1 changed files with 119 additions and 81 deletions
				
			
		| 
						 | 
					@ -1,4 +1,4 @@
 | 
				
			||||||
describe('Basic', () => {
 | 
					describe('Before setup instance', () => {
 | 
				
			||||||
	beforeEach(() => {
 | 
						beforeEach(() => {
 | 
				
			||||||
		cy.request('POST', '/api/reset-db').as('reset');
 | 
							cy.request('POST', '/api/reset-db').as('reset');
 | 
				
			||||||
		cy.get('@reset').its('status').should('equal', 204);
 | 
							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').should('have.property', 'response.statusCode');
 | 
				
			||||||
		cy.wait('@signup');
 | 
							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', {
 | 
							cy.request('POST', '/api/admin/accounts/create', {
 | 
				
			||||||
			username: 'admin',
 | 
								username: 'admin',
 | 
				
			||||||
			password: 'pass',
 | 
								password: 'pass',
 | 
				
			||||||
		}).as('setup');
 | 
							}).its('body').as('admin');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		cy.get('@setup').then(() => {
 | 
							cy.get('@admin');
 | 
				
			||||||
			cy.visit('/');
 | 
						});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			cy.intercept('POST', '/api/signup').as('signup');
 | 
						afterEach(() => {
 | 
				
			||||||
 | 
							// テスト終了直前にページ遷移するようなテストケース(例えばアカウント作成)だと、たぶんCypressのバグでブラウザの内容が次のテストケースに引き継がれてしまう(例えばアカウントが作成し終わった段階からテストが始まる)。
 | 
				
			||||||
 | 
							// waitを入れることでそれを防止できる
 | 
				
			||||||
 | 
							cy.wait(1000);
 | 
				
			||||||
 | 
						});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			cy.get('[data-cy-signup]').click();
 | 
					  it('successfully loads', () => {
 | 
				
			||||||
			cy.get('[data-cy-signup-username] input').type('alice');
 | 
					    cy.visit('/');
 | 
				
			||||||
			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('@signup');
 | 
						it('signup', () => {
 | 
				
			||||||
 | 
							cy.visit('/');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							cy.intercept('POST', '/api/signup').as('signup');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							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('@signup');
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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',
 | 
				
			||||||
 | 
							}).its('body').as('admin');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							cy.get('@admin').then(() => {
 | 
				
			||||||
 | 
								// ユーザー作成
 | 
				
			||||||
 | 
								cy.request('POST', '/api/signup', {
 | 
				
			||||||
 | 
									username: 'alice',
 | 
				
			||||||
 | 
									password: 'alice1234',
 | 
				
			||||||
 | 
								}).its('body').as('alice');
 | 
				
			||||||
		});
 | 
							});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							cy.get('@alice');
 | 
				
			||||||
 | 
						});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						afterEach(() => {
 | 
				
			||||||
 | 
							// テスト終了直前にページ遷移するようなテストケース(例えばアカウント作成)だと、たぶんCypressのバグでブラウザの内容が次のテストケースに引き継がれてしまう(例えばアカウントが作成し終わった段階からテストが始まる)。
 | 
				
			||||||
 | 
							// waitを入れることでそれを防止できる
 | 
				
			||||||
 | 
							cy.wait(1000);
 | 
				
			||||||
 | 
						});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  it('successfully loads', () => {
 | 
				
			||||||
 | 
					    cy.visit('/');
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	it('signin', () => {
 | 
						it('signin', () => {
 | 
				
			||||||
		// インスタンス初期セットアップ
 | 
							cy.visit('/');
 | 
				
			||||||
		cy.request('POST', '/api/admin/accounts/create', {
 | 
					 | 
				
			||||||
			username: 'admin',
 | 
					 | 
				
			||||||
			password: 'pass',
 | 
					 | 
				
			||||||
		}).as('setup');
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
		cy.get('@setup').then(() => {
 | 
							cy.intercept('POST', '/api/signin').as('signin');
 | 
				
			||||||
			// ユーザー作成
 | 
					 | 
				
			||||||
			cy.request('POST', '/api/signup', {
 | 
					 | 
				
			||||||
				username: 'alice',
 | 
					 | 
				
			||||||
				password: 'alice1234',
 | 
					 | 
				
			||||||
			}).as('signup');
 | 
					 | 
				
			||||||
		});
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
		cy.get('@signup').then(() => {
 | 
							cy.get('[data-cy-signin]').click();
 | 
				
			||||||
			cy.visit('/');
 | 
							cy.get('[data-cy-signin-username] input').type('alice');
 | 
				
			||||||
 | 
							// Enterキーでサインインできるかの確認も兼ねる
 | 
				
			||||||
 | 
							cy.get('[data-cy-signin-password] input').type('alice1234{enter}');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			cy.intercept('POST', '/api/signin').as('signin');
 | 
							cy.wait('@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('/');
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		// インスタンス初期セットアップ
 | 
					 | 
				
			||||||
		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('/');
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			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.wait('@signin').as('signinEnd');
 | 
					 | 
				
			||||||
		});
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		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.contains('Hello, Misskey!');
 | 
					 | 
				
			||||||
		});
 | 
					 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	it('suspend', function() {
 | 
						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', {
 | 
							cy.request('POST', '/api/admin/accounts/create', {
 | 
				
			||||||
			username: 'admin',
 | 
								username: 'admin',
 | 
				
			||||||
| 
						 | 
					@ -134,18 +153,37 @@ describe('Basic', () => {
 | 
				
			||||||
		});
 | 
							});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		cy.get('@alice').then(() => {
 | 
							cy.get('@alice').then(() => {
 | 
				
			||||||
			cy.request('POST', '/api/admin/suspend-user', {
 | 
					 | 
				
			||||||
				i: this.admin.token,
 | 
					 | 
				
			||||||
				userId: this.alice.id,
 | 
					 | 
				
			||||||
			});
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
			cy.visit('/');
 | 
								cy.visit('/');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								cy.intercept('POST', '/api/signin').as('signin');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			cy.get('[data-cy-signin]').click();
 | 
								cy.get('[data-cy-signin]').click();
 | 
				
			||||||
			cy.get('[data-cy-signin-username] input').type('alice');
 | 
								cy.get('[data-cy-signin-username] input').type('alice');
 | 
				
			||||||
			cy.get('[data-cy-signin-password] input').type('alice1234{enter}');
 | 
								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!');
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue