test: e2eテストがCIで失敗していた問題をいくつか修正 (#8642)
* test: indexeddbをテスト毎に初期化するように * fix: metaが無いときにfetch-metaを同時に呼ぶと死ぬことがある問題を修正 * test: ログイン後のクライアント側処理を待たずにリロードされてログイン出来ないことがあったのを修正
This commit is contained in:
		
							parent
							
								
									4b872856c2
								
							
						
					
					
						commit
						22bb1a1793
					
				
					 2 changed files with 23 additions and 6 deletions
				
			
		| 
						 | 
					@ -1,5 +1,8 @@
 | 
				
			||||||
describe('Before setup instance', () => {
 | 
					describe('Before setup instance', () => {
 | 
				
			||||||
	beforeEach(() => {
 | 
						beforeEach(() => {
 | 
				
			||||||
 | 
							cy.window(win => {
 | 
				
			||||||
 | 
								win.indexedDB.deleteDatabase('keyval-store');
 | 
				
			||||||
 | 
							});
 | 
				
			||||||
		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);
 | 
				
			||||||
		cy.reload(true);
 | 
							cy.reload(true);
 | 
				
			||||||
| 
						 | 
					@ -32,6 +35,9 @@ describe('Before setup instance', () => {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
describe('After setup instance', () => {
 | 
					describe('After setup instance', () => {
 | 
				
			||||||
	beforeEach(() => {
 | 
						beforeEach(() => {
 | 
				
			||||||
 | 
							cy.window(win => {
 | 
				
			||||||
 | 
								win.indexedDB.deleteDatabase('keyval-store');
 | 
				
			||||||
 | 
							});
 | 
				
			||||||
		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);
 | 
				
			||||||
		cy.reload(true);
 | 
							cy.reload(true);
 | 
				
			||||||
| 
						 | 
					@ -70,6 +76,9 @@ describe('After setup instance', () => {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
describe('After user signup', () => {
 | 
					describe('After user signup', () => {
 | 
				
			||||||
	beforeEach(() => {
 | 
						beforeEach(() => {
 | 
				
			||||||
 | 
							cy.window(win => {
 | 
				
			||||||
 | 
								win.indexedDB.deleteDatabase('keyval-store');
 | 
				
			||||||
 | 
							});
 | 
				
			||||||
		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);
 | 
				
			||||||
		cy.reload(true);
 | 
							cy.reload(true);
 | 
				
			||||||
| 
						 | 
					@ -129,6 +138,9 @@ describe('After user signup', () => {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
describe('After user singed in', () => {
 | 
					describe('After user singed in', () => {
 | 
				
			||||||
	beforeEach(() => {
 | 
						beforeEach(() => {
 | 
				
			||||||
 | 
							cy.window(win => {
 | 
				
			||||||
 | 
								win.indexedDB.deleteDatabase('keyval-store');
 | 
				
			||||||
 | 
							});
 | 
				
			||||||
		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);
 | 
				
			||||||
		cy.reload(true);
 | 
							cy.reload(true);
 | 
				
			||||||
| 
						 | 
					@ -163,12 +175,10 @@ describe('After user singed in', () => {
 | 
				
			||||||
	});
 | 
						});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  it('successfully loads', () => {
 | 
					  it('successfully loads', () => {
 | 
				
			||||||
    cy.visit('/');
 | 
							cy.get('[data-cy-open-post-form]').should('be.visible');
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	it('note', () => {
 | 
						it('note', () => {
 | 
				
			||||||
    cy.visit('/');
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		cy.get('[data-cy-open-post-form]').click();
 | 
							cy.get('[data-cy-open-post-form]').click();
 | 
				
			||||||
		cy.get('[data-cy-post-form-text]').type('Hello, Misskey!');
 | 
							cy.get('[data-cy-post-form-text]').type('Hello, Misskey!');
 | 
				
			||||||
		cy.get('[data-cy-open-post-form-submit]').click();
 | 
							cy.get('[data-cy-open-post-form-submit]').click();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -20,9 +20,16 @@ export async function fetchMeta(noCache = false): Promise<Meta> {
 | 
				
			||||||
			cache = meta;
 | 
								cache = meta;
 | 
				
			||||||
			return meta;
 | 
								return meta;
 | 
				
			||||||
		} else {
 | 
							} else {
 | 
				
			||||||
			const saved = await transactionalEntityManager.save(Meta, {
 | 
								// metaが空のときfetchMetaが同時に呼ばれるとここが同時に呼ばれてしまうことがあるのでフェイルセーフなupsertを使う
 | 
				
			||||||
				id: 'x',
 | 
								const saved = await transactionalEntityManager
 | 
				
			||||||
			}) as Meta;
 | 
									.upsert(
 | 
				
			||||||
 | 
										Meta,
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											id: 'x',
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										['id'],
 | 
				
			||||||
 | 
									)
 | 
				
			||||||
 | 
									.then((x) => transactionalEntityManager.findOneByOrFail(Meta, x.identifiers[0]));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			cache = saved;
 | 
								cache = saved;
 | 
				
			||||||
			return saved;
 | 
								return saved;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue