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,15 +28,34 @@ 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'); | ||||||
|  | 	}); | ||||||
|  | 
 | ||||||
|  | 	afterEach(() => { | ||||||
|  | 		// テスト終了直前にページ遷移するようなテストケース(例えばアカウント作成)だと、たぶんCypressのバグでブラウザの内容が次のテストケースに引き継がれてしまう(例えばアカウントが作成し終わった段階からテストが始まる)。
 | ||||||
|  | 		// waitを入れることでそれを防止できる
 | ||||||
|  | 		cy.wait(1000); | ||||||
|  | 	}); | ||||||
|  | 
 | ||||||
|  |   it('successfully loads', () => { | ||||||
|  |     cy.visit('/'); | ||||||
|  |   }); | ||||||
|  | 
 | ||||||
|  | 	it('signup', () => { | ||||||
| 		cy.visit('/'); | 		cy.visit('/'); | ||||||
| 
 | 
 | ||||||
| 		cy.intercept('POST', '/api/signup').as('signup'); | 		cy.intercept('POST', '/api/signup').as('signup'); | ||||||
|  | @ -51,22 +70,40 @@ describe('Basic', () => { | ||||||
|   }); |   }); | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| 	it('signin', () => { | 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', { | 		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').then(() => { | ||||||
| 			// ユーザー作成
 | 			// ユーザー作成
 | ||||||
| 			cy.request('POST', '/api/signup', { | 			cy.request('POST', '/api/signup', { | ||||||
| 				username: 'alice', | 				username: 'alice', | ||||||
| 				password: 'alice1234', | 				password: 'alice1234', | ||||||
| 			}).as('signup'); | 			}).its('body').as('alice'); | ||||||
| 		}); | 		}); | ||||||
| 
 | 
 | ||||||
| 		cy.get('@signup').then(() => { | 		cy.get('@alice'); | ||||||
|  | 	}); | ||||||
|  | 
 | ||||||
|  | 	afterEach(() => { | ||||||
|  | 		// テスト終了直前にページ遷移するようなテストケース(例えばアカウント作成)だと、たぶんCypressのバグでブラウザの内容が次のテストケースに引き継がれてしまう(例えばアカウントが作成し終わった段階からテストが始まる)。
 | ||||||
|  | 		// waitを入れることでそれを防止できる
 | ||||||
|  | 		cy.wait(1000); | ||||||
|  | 	}); | ||||||
|  | 
 | ||||||
|  |   it('successfully loads', () => { | ||||||
|  |     cy.visit('/'); | ||||||
|  |   }); | ||||||
|  | 
 | ||||||
|  | 	it('signin', () => { | ||||||
| 		cy.visit('/'); | 		cy.visit('/'); | ||||||
| 
 | 
 | ||||||
| 		cy.intercept('POST', '/api/signin').as('signin'); | 		cy.intercept('POST', '/api/signin').as('signin'); | ||||||
|  | @ -78,47 +115,29 @@ describe('Basic', () => { | ||||||
| 
 | 
 | ||||||
| 		cy.wait('@signin'); | 		cy.wait('@signin'); | ||||||
|   }); |   }); | ||||||
|  | 
 | ||||||
|  | 	it('suspend', function() { | ||||||
|  | 		cy.request('POST', '/api/admin/suspend-user', { | ||||||
|  | 			i: this.admin.token, | ||||||
|  | 			userId: this.alice.id, | ||||||
| 		}); | 		}); | ||||||
| 
 | 
 | ||||||
| 	it('note', () => { |  | ||||||
| 		cy.visit('/'); | 		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]').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.wait('@signin').as('signinEnd'); | 		cy.contains('アカウントが凍結されています'); | ||||||
| 		}); |  | ||||||
| 
 |  | ||||||
| 		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() { | 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