feat: 凍結された場合のダイアログを実装 (#7811)
* feat: 凍結された場合のダイアログを実装 * Update CHANGELOG.md * Update basic.js * improve error handling * cypressなんもわからん * Update basic.js
This commit is contained in:
		
							parent
							
								
									6d4e96dea2
								
							
						
					
					
						commit
						54e0a7f8a8
					
				
					 8 changed files with 186 additions and 66 deletions
				
			
		|  | @ -1,10 +1,16 @@ | |||
| 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); | ||||
| 	}); | ||||
| 
 | ||||
| 	beforeEach(() => { | ||||
| 		cy.reload(true); | ||||
| 	afterEach(() => { | ||||
| 		// テスト終了直前にページ遷移するようなテストケース(例えばアカウント作成)だと、たぶんCypressのバグでブラウザの内容が次のテストケースに引き継がれてしまう(例えばアカウントが作成し終わった段階からテストが始まる)。
 | ||||
| 		// waitを入れることでそれを防止できる
 | ||||
| 		cy.wait(1000); | ||||
| 	}); | ||||
| 
 | ||||
|   it('successfully loads', () => { | ||||
|  | @ -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('[data-cy-signin-username] input').type('alice'); | ||||
| 		cy.get('@setup').then(() => { | ||||
| 			// ユーザー作成
 | ||||
| 			cy.request('POST', '/api/signup', { | ||||
| 				username: 'alice', | ||||
| 				password: 'alice1234', | ||||
| 			}).as('signup'); | ||||
| 		}); | ||||
| 
 | ||||
| 		// Enterキーでサインインできるかの確認も兼ねる
 | ||||
| 		cy.get('[data-cy-signin-password] input').type('alice1234{enter}'); | ||||
| 		//#endregion
 | ||||
| 		cy.get('@signup').then(() => { | ||||
| 			cy.visit('/'); | ||||
| 
 | ||||
| 		cy.get('[data-cy-open-post-form]').click(); | ||||
| 			cy.intercept('POST', '/api/signin').as('signin'); | ||||
| 
 | ||||
| 		cy.get('[data-cy-post-form-text]').type('Hello, Misskey!'); | ||||
| 			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-open-post-form-submit]').click(); | ||||
| 			cy.wait('@signin').as('signinEnd'); | ||||
| 		}); | ||||
| 
 | ||||
| 		// TODO: 投稿した文字列が画面内にあるか(=タイムラインに流れてきたか)のテスト
 | ||||
| 		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() { | ||||
| 		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('アカウントが凍結されています'); | ||||
| 		}); | ||||
| 	}); | ||||
| }); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue