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(() => { | ||||
| 		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'); | ||||
| 		}).its('body').as('admin'); | ||||
| 
 | ||||
| 		cy.get('@setup').then(() => { | ||||
| 			cy.visit('/'); | ||||
| 		cy.get('@admin'); | ||||
| 	}); | ||||
| 
 | ||||
| 			cy.intercept('POST', '/api/signup').as('signup'); | ||||
| 	afterEach(() => { | ||||
| 		// テスト終了直前にページ遷移するようなテストケース(例えばアカウント作成)だと、たぶんCypressのバグでブラウザの内容が次のテストケースに引き継がれてしまう(例えばアカウントが作成し終わった段階からテストが始まる)。
 | ||||
| 		// waitを入れることでそれを防止できる
 | ||||
| 		cy.wait(1000); | ||||
| 	}); | ||||
| 
 | ||||
| 			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(); | ||||
|   it('successfully loads', () => { | ||||
|     cy.visit('/'); | ||||
|   }); | ||||
| 
 | ||||
| 			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', () => { | ||||
| 		// インスタンス初期セットアップ
 | ||||
| 		cy.request('POST', '/api/admin/accounts/create', { | ||||
| 			username: 'admin', | ||||
| 			password: 'pass', | ||||
| 		}).as('setup'); | ||||
| 		cy.visit('/'); | ||||
| 
 | ||||
| 		cy.get('@setup').then(() => { | ||||
| 			// ユーザー作成
 | ||||
| 			cy.request('POST', '/api/signup', { | ||||
| 				username: 'alice', | ||||
| 				password: 'alice1234', | ||||
| 			}).as('signup'); | ||||
| 		}); | ||||
| 		cy.intercept('POST', '/api/signin').as('signin'); | ||||
| 
 | ||||
| 		cy.get('@signup').then(() => { | ||||
| 			cy.visit('/'); | ||||
| 		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.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('/'); | ||||
| 
 | ||||
| 		// インスタンス初期セットアップ
 | ||||
| 		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!'); | ||||
| 		}); | ||||
| 		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!'); | ||||
|   }); | ||||
| }); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue