Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Randomly failing tests on CI #11534

Open
laurent22 opened this issue Dec 18, 2024 · 0 comments
Open

Randomly failing tests on CI #11534

laurent22 opened this issue Dec 18, 2024 · 0 comments
Labels
bug It's a bug high High priority issues

Comments

@laurent22
Copy link
Owner

laurent22 commented Dec 18, 2024

We'll list here the randomly failing tests so that we can find out if it's often the same ones that come back or not. If it's often the same ones we could potentially comment them out.

Note: in some cases many timeouts happen within the same run. Is it possible that the system at the time is slow and is causing these timeouts? In which case would it make sense to set very large timeouts, like 5 or 10 minutes?

main.spec.ts: should correctly resize large images

First: 2024-12-18
Last: 2025-01-11
Count: 4

➤ YN0000: [@joplin/app-desktop]:   1) main.spec.ts:99:6 › main › should correctly resize large images ───────────────────────────────
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]:     TimeoutError: locator.waitFor: Timeout 30000ms exceeded.
➤ YN0000: [@joplin/app-desktop]:     Call log:
➤ YN0000: [@joplin/app-desktop]:       - waiting for locator('.rli-editor').locator('iframe[src$="note-viewer/index.html"]').frameLocator(':scope').getByAltText('large-jpg-image-with-exif-rotation.jpg')
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]:        at util/getImageSourceSize.ts:6
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]:       4 | 	// Use state: 'attached' -- we don't need the image to be on the screen (just present
➤ YN0000: [@joplin/app-desktop]:       5 | 	// in the DOM).
➤ YN0000: [@joplin/app-desktop]:     > 6 | 	await imageLocator.waitFor({ state: 'attached' });
➤ YN0000: [@joplin/app-desktop]:         | 	                   ^
➤ YN0000: [@joplin/app-desktop]:       7 |
➤ YN0000: [@joplin/app-desktop]:       8 | 	// We load a copy of the image to avoid returning an overriden width set with
➤ YN0000: [@joplin/app-desktop]:       9 | 	//    .width = some_number
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]:         at getImageSourceSize (/home/runner/work/joplin/joplin/packages/app-desktop/integration-tests/util/getImageSourceSize.ts:6:21)
➤ YN0000: [@joplin/app-desktop]:         at /home/runner/work/joplin/joplin/packages/app-desktop/integration-tests/main.spec.ts:131:47
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]:     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]:     TimeoutError: locator.waitFor: Timeout 30000ms exceeded.
➤ YN0000: [@joplin/app-desktop]:     Call log:
➤ YN0000: [@joplin/app-desktop]:       - waiting for locator('.rli-editor').locator('iframe[src$="note-viewer/index.html"]').frameLocator(':scope').getByAltText('large-jpg-image-with-exif-rotation.jpg')
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]:        at util/getImageSourceSize.ts:6
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]:       4 | 	// Use state: 'attached' -- we don't need the image to be on the screen (just present
➤ YN0000: [@joplin/app-desktop]:       5 | 	// in the DOM).
➤ YN0000: [@joplin/app-desktop]:     > 6 | 	await imageLocator.waitFor({ state: 'attached' });
➤ YN0000: [@joplin/app-desktop]:         | 	                   ^
➤ YN0000: [@joplin/app-desktop]:       7 |
➤ YN0000: [@joplin/app-desktop]:       8 | 	// We load a copy of the image to avoid returning an overriden width set with
➤ YN0000: [@joplin/app-desktop]:       9 | 	//    .width = some_number
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]:         at getImageSourceSize (/home/runner/work/joplin/joplin/packages/app-desktop/integration-tests/util/getImageSourceSize.ts:6:21)
➤ YN0000: [@joplin/app-desktop]:         at /home/runner/work/joplin/joplin/packages/app-desktop/integration-tests/main.spec.ts:121:44
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]:     attachment #1: trace (application/zip) ─────────────────────────────────────────────────────────
➤ YN0000: [@joplin/app-desktop]:     test-results/main-main-should-correctly-resize-large-images-retry1/trace.zip
➤ YN0000: [@joplin/app-desktop]:     Usage:
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]:         yarn playwright show-trace test-results/main-main-should-correctly-resize-large-images-retry1/trace.zip
➤ YN0000: [@joplin/app-desktop]: 

markdownEditor.spec.ts: preview pane should render video attachments

Count: 5
First: 2024-12-18
Last: 2025-02-11

➤ YN0000: [@joplin/app-desktop]:   1) markdownEditor.spec.ts:83:6 › markdownEditor › preview pane should render video attachments ───
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]:     Error: toBeSeekableMediaElement: Should play until 7:
➤ YN0000: [@joplin/app-desktop]:       Error: expect(received).toBeGreaterThan(expected)
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]:     Expected: > 7
➤ YN0000: [@joplin/app-desktop]:     Received:   0
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]:     Call Log:
➤ YN0000: [@joplin/app-desktop]:     - Timeout 5000ms exceeded while waiting on the predicate
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]:       92 | 		const videoLocator = editor.getNoteViewerFrameLocator().locator('video');
➤ YN0000: [@joplin/app-desktop]:       93 | 		const expectVideoToRender = async () => {
➤ YN0000: [@joplin/app-desktop]:     > 94 | 			await expect(videoLocator).toBeSeekableMediaElement(6.9, 7);
➤ YN0000: [@joplin/app-desktop]:          | 			                           ^
➤ YN0000: [@joplin/app-desktop]:       95 | 		};
➤ YN0000: [@joplin/app-desktop]:       96 |
➤ YN0000: [@joplin/app-desktop]:       97 | 		await expectVideoToRender();
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]:         at expectVideoToRender (/home/runner/work/joplin/joplin/packages/app-desktop/integration-tests/markdownEditor.spec.ts:94:31)
➤ YN0000: [@joplin/app-desktop]:         at /home/runner/work/joplin/joplin/packages/app-desktop/integration-tests/markdownEditor.spec.ts:104:9
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]: [16/37] markdownEditor.spec.ts:107:6 › markdownEditor › arrow keys should navigate the toolbar

screens/Note › changing the note body in the editor should update the note's body

Count: 3

➤ YN0000: [@joplin/app-mobile]: FAIL components/screens/Note/Note.test.tsx (152.329 s)
➤ YN0000: [@joplin/app-mobile]:   ● screens/Note › changing the note body in the editor should update the note's body
➤ YN0000: [@joplin/app-mobile]: 
➤ YN0000: [@joplin/app-mobile]:     Unable to find an element with accessibility label: Edit
➤ YN0000: [@joplin/app-mobile]: 
➤ YN0000: [@joplin/app-mobile]:     <View>
➤ YN0000: [@joplin/app-mobile]:       <View>
➤ YN0000: [@joplin/app-mobile]:         <RNCSafeAreaProvider>
➤ YN0000: [@joplin/app-mobile]:           <View>
➤ YN0000: [@joplin/app-mobile]:             <View>
➤ YN0000: [@joplin/app-mobile]:               <View>
➤ YN0000: [@joplin/app-mobile]:                 <View>
➤ YN0000: [@joplin/app-mobile]:                   <View
➤ YN0000: [@joplin/app-mobile]:                     accessibilityLabel="Back"
➤ YN0000: [@joplin/app-mobile]:                     accessibilityRole="button"
➤ YN0000: [@joplin/app-mobile]:                     accessibilityState={
➤ YN0000: [@joplin/app-mobile]:                       {
➤ YN0000: [@joplin/app-mobile]:                         "disabled": true,
➤ YN0000: [@joplin/app-mobile]:                       }
➤ YN0000: [@joplin/app-mobile]:                     }
➤ YN0000: [@joplin/app-mobile]:                     accessible={true}
➤ YN0000: [@joplin/app-mobile]:                   >
➤ YN0000: [@joplin/app-mobile]:                     <View>
➤ YN0000: [@joplin/app-mobile]:                       <View />
➤ YN0000: [@joplin/app-mobile]:                     </View>
➤ YN0000: [@joplin/app-mobile]:                   </View>
➤ YN0000: [@joplin/app-mobile]:                   <Text
➤ YN0000: [@joplin/app-mobile]:                     accessibilityRole="header"
➤ YN0000: [@joplin/app-mobile]:                   />
➤ YN0000: [@joplin/app-mobile]:                 </View>
➤ YN0000: [@joplin/app-mobile]:               </View>
➤ YN0000: [@joplin/app-mobile]:             </View>
➤ YN0000: [@joplin/app-mobile]:           </View>
➤ YN0000: [@joplin/app-mobile]:         </RNCSafeAreaProvider>
➤ YN0000: [@joplin/app-mobile]:       </View>
➤ YN0000: [@joplin/app-mobile]:       <RCTSafeAreaView>
➤ YN0000: [@joplin/app-mobile]:         <View />
➤ YN0000: [@joplin/app-mobile]:       </RCTSafeAreaView>
➤ YN0000: [@joplin/app-mobile]:     </View>
➤ YN0000: [@joplin/app-mobile]: 
➤ YN0000: [@joplin/app-mobile]:       136 |
➤ YN0000: [@joplin/app-mobile]:       137 | const openEditor = async () => {
➤ YN0000: [@joplin/app-mobile]:     > 138 | 	const editButton = await screen.findByLabelText('Edit');
➤ YN0000: [@joplin/app-mobile]:           | 	                                ^
➤ YN0000: [@joplin/app-mobile]:       139 |
➤ YN0000: [@joplin/app-mobile]:       140 | 	fireEvent.press(editButton);
➤ YN0000: [@joplin/app-mobile]:       141 | 	await expectToBeEditing(true);
➤ YN0000: [@joplin/app-mobile]: 
➤ YN0000: [@joplin/app-mobile]:       at openEditor (components/screens/Note/Note.test.tsx:138:34)
➤ YN0000: [@joplin/app-mobile]:       at components/screens/Note/Note.test.tsx:211:10
➤ YN0000: [@joplin/app-mobile]:       at runWithFakeTimers (../lib/testing/test-utils.ts:1144:16)
➤ YN0000: [@joplin/app-mobile]:       at components/screens/Note/Note.test.tsx:210:48
➤ YN0000: [@joplin/app-mobile]:       at callback (node_modules/@testing-library/react-native/src/act.ts:31:24)
➤ YN0000: [@joplin/app-mobile]:       at callback (node_modules/react/cjs/react.development.js:2512:16)
➤ YN0000: [@joplin/app-mobile]:       at actImplementation (node_modules/@testing-library/react-native/src/act.ts:30:25)
➤ YN0000: [@joplin/app-mobile]:       at Object.<anonymous> (components/screens/Note/Note.test.tsx:210:12)

useFormNote › should update note when decryption completes

Count: 7
First: 2024-12-12
Last: 2025-03-09

➤ YN0000: [@joplin/app-desktop]: FAIL gui/NoteEditor/utils/useFormNote.test.ts (20.605 s)
➤ YN0000: [@joplin/app-desktop]:   ● useFormNote › should update note when decryption completes
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]:     Timed out in waitFor after 15000ms.
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]:       73 |
➤ YN0000: [@joplin/app-desktop]:       74 | 		// Ending decryption should also cause a re-render
➤ YN0000: [@joplin/app-desktop]:     > 75 | 		await formNote.waitFor(() => {
➤ YN0000: [@joplin/app-desktop]:          | 		^
➤ YN0000: [@joplin/app-desktop]:       76 | 			expect(formNote.result.current.formNote).toMatchObject({
➤ YN0000: [@joplin/app-desktop]:       77 | 				encryption_applied: 0,
➤ YN0000: [@joplin/app-desktop]:       78 | 			});
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]:       at Object.waitFor (node_modules/@testing-library/react-hooks/lib/core/asyncUtils.js:64:13)
➤ YN0000: [@joplin/app-desktop]:       at Object.<anonymous> (gui/NoteEditor/utils/useFormNote.test.ts:75:3)

screens/Note › should show the currently selected note

Count: 1

➤ YN0000: [@joplin/app-mobile]: FAIL components/screens/Note/Note.test.tsx (293.845 s)
➤ YN0000: [@joplin/app-mobile]:   ● screens/Note › should show the currently selected note
➤ YN0000: [@joplin/app-mobile]: 
➤ YN0000: [@joplin/app-mobile]:     Unable to find an element with displayValue: Test note (title)
➤ YN0000: [@joplin/app-mobile]: 
➤ YN0000: [@joplin/app-mobile]:     <View>
➤ YN0000: [@joplin/app-mobile]:       <View>
➤ YN0000: [@joplin/app-mobile]:         <RNCSafeAreaProvider>
➤ YN0000: [@joplin/app-mobile]:           <View>
➤ YN0000: [@joplin/app-mobile]:             <View>
➤ YN0000: [@joplin/app-mobile]:               <View>
➤ YN0000: [@joplin/app-mobile]:                 <View>
➤ YN0000: [@joplin/app-mobile]:                   <View
➤ YN0000: [@joplin/app-mobile]:                     accessibilityLabel="Back"
➤ YN0000: [@joplin/app-mobile]:                     accessibilityRole="button"
➤ YN0000: [@joplin/app-mobile]:                     accessibilityState={
➤ YN0000: [@joplin/app-mobile]:                       {
➤ YN0000: [@joplin/app-mobile]:                         "disabled": true,
➤ YN0000: [@joplin/app-mobile]:                       }
➤ YN0000: [@joplin/app-mobile]:                     }
➤ YN0000: [@joplin/app-mobile]:                     accessible={true}
➤ YN0000: [@joplin/app-mobile]:                   >
➤ YN0000: [@joplin/app-mobile]:                     <View>
➤ YN0000: [@joplin/app-mobile]:                       <View />
➤ YN0000: [@joplin/app-mobile]:                     </View>
➤ YN0000: [@joplin/app-mobile]:                   </View>
➤ YN0000: [@joplin/app-mobile]:                   <View>
➤ YN0000: [@joplin/app-mobile]:                     <View>
➤ YN0000: [@joplin/app-mobile]:                       <View
➤ YN0000: [@joplin/app-mobile]:                         accessibilityHint="Selects a notebook Opens dropdown"
➤ YN0000: [@joplin/app-mobile]:                         accessibilityRole="button"
➤ YN0000: [@joplin/app-mobile]:                         accessibilityState={
➤ YN0000: [@joplin/app-mobile]:                           {
➤ YN0000: [@joplin/app-mobile]:                             "disabled": false,
➤ YN0000: [@joplin/app-mobile]:                           }
➤ YN0000: [@joplin/app-mobile]:                         }
➤ YN0000: [@joplin/app-mobile]:                         accessible={true}
➤ YN0000: [@joplin/app-mobile]:                       >
➤ YN0000: [@joplin/app-mobile]:                         <Text>
➤ YN0000: [@joplin/app-mobile]:                           test
➤ YN0000: [@joplin/app-mobile]:                         </Text>
➤ YN0000: [@joplin/app-mobile]:                         <Text
➤ YN0000: [@joplin/app-mobile]:                           accessibilityElementsHidden={true}
➤ YN0000: [@joplin/app-mobile]:                           accessibilityRole="image"
➤ YN0000: [@joplin/app-mobile]:                           aria-hidden={true}
➤ YN0000: [@joplin/app-mobile]:                           importantForAccessibility="no"
➤ YN0000: [@joplin/app-mobile]:                         >
➤ YN0000: [@joplin/app-mobile]:                           ▼
➤ YN0000: [@joplin/app-mobile]:                         </Text>
➤ YN0000: [@joplin/app-mobile]:                       </View>
➤ YN0000: [@joplin/app-mobile]:                     </View>
➤ YN0000: [@joplin/app-mobile]:                   </View>
➤ YN0000: [@joplin/app-mobile]:                   <View>
➤ YN0000: [@joplin/app-mobile]:                     <View>
➤ YN0000: [@joplin/app-mobile]:                       <View
➤ YN0000: [@joplin/app-mobile]:                         accessible={true}
➤ YN0000: [@joplin/app-mobile]:                         testID="screen-header-menu-trigger"
➤ YN0000: [@joplin/app-mobile]:                       >
➤ YN0000: [@joplin/app-mobile]:                         <View>
➤ YN0000: [@joplin/app-mobile]:                           <View
➤ YN0000: [@joplin/app-mobile]:                             accessibilityLabel="Actions"
➤ YN0000: [@joplin/app-mobile]:                       }
➤ YN0000: [@joplin/app-mobile]:                       accessible={true}
➤ YN0000: [@joplin/app-mobile]:                       testID="fab"
➤ YN0000: [@joplin/app-mobile]:                     >
➤ YN0000: [@joplin/app-mobile]:                       <View
➤ YN0000: [@joplin/app-mobile]:                         testID="fab-content"
➤ YN0000: [@joplin/app-mobile]:                       >
➤ YN0000: [@joplin/app-mobile]:                         <View>
➤ YN0000: [@joplin/app-mobile]:                           <View
➤ YN0000: [@joplin/app-mobile]:                             testID="cross-fade-icon-current"
➤ YN0000: [@joplin/app-mobile]:                           >
➤ YN0000: [@joplin/app-mobile]:                             <View />
➤ YN0000: [@joplin/app-mobile]:                           </View>
➤ YN0000: [@joplin/app-mobile]:                         </View>
➤ YN0000: [@joplin/app-mobile]:                       </View>
➤ YN0000: [@joplin/app-mobile]:                     </View>
➤ YN0000: [@joplin/app-mobile]:                   </View>
➤ YN0000: [@joplin/app-mobile]:                 </View>
➤ YN0000: [@joplin/app-mobile]:               </View>
➤ YN0000: [@joplin/app-mobile]:             </View>
➤ YN0000: [@joplin/app-mobile]:           </View>
➤ YN0000: [@joplin/app-mobile]:         </RNCSafeAreaProvider>
➤ YN0000: [@joplin/app-mobile]:       </View>
➤ YN0000: [@joplin/app-mobile]:       <RCTSafeAreaView>
➤ YN0000: [@joplin/app-mobile]:         <View />
➤ YN0000: [@joplin/app-mobile]:       </RCTSafeAreaView>
➤ YN0000: [@joplin/app-mobile]:     </View>
➤ YN0000: [@joplin/app-mobile]: 
➤ YN0000: [@joplin/app-mobile]:       164 | 		render(<WrappedNoteScreen />);
➤ YN0000: [@joplin/app-mobile]:       165 |
➤ YN0000: [@joplin/app-mobile]:     > 166 | 		const titleInput = await screen.findByDisplayValue('Test note (title)');
➤ YN0000: [@joplin/app-mobile]:           | 		                                ^
➤ YN0000: [@joplin/app-mobile]:       167 | 		expect(titleInput).toBeVisible();
➤ YN0000: [@joplin/app-mobile]:       168 |
➤ YN0000: [@joplin/app-mobile]:       169 | 		const renderedNote = await getNoteViewerDom();
➤ YN0000: [@joplin/app-mobile]: 
➤ YN0000: [@joplin/app-mobile]:       at Object.<anonymous> (components/screens/Note/Note.test.tsx:166:35)

main.spec.ts:43:6 › main › mermaid and KaTeX should render

Count: 1

➤ YN0000: [@joplin/app-desktop]: [7/37] main.spec.ts:43:6 › main › mermaid and KaTeX should render
➤ YN0000: [@joplin/app-desktop]: [8/37] main.spec.ts:43:6 › main › mermaid and KaTeX should render (retry #1)
➤ YN0000: [@joplin/app-desktop]: [9/37] main.spec.ts:43:6 › main › mermaid and KaTeX should render (retry #2)
➤ YN0000: [@joplin/app-desktop]:   1) main.spec.ts:43:6 › main › mermaid and KaTeX should render ────────────────────────────────────
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]:     Error: Timed out 5000ms waiting for expect(locator).toBeVisible()
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]:     Locator: locator('.rli-editor').locator('iframe[src$="note-viewer/index.html"]').frameLocator(':scope').locator('pre.mermaid text').filter({ hasText: 'bf59b2' })
➤ YN0000: [@joplin/app-desktop]:     Expected: visible
➤ YN0000: [@joplin/app-desktop]:     Received: <element(s) not found>
➤ YN0000: [@joplin/app-desktop]:     Call log:
➤ YN0000: [@joplin/app-desktop]:       - expect.toBeVisible with timeout 5000ms
➤ YN0000: [@joplin/app-desktop]:       - waiting for locator('.rli-editor').locator('iframe[src$="note-viewer/index.html"]').frameLocator(':scope').locator('pre.mermaid text').filter({ hasText: 'bf59b2' })
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]:       82 | 		await expect(
➤ YN0000: [@joplin/app-desktop]:       83 | 			viewerFrame.locator('pre.mermaid text', { hasText: testCommitId }),
➤ YN0000: [@joplin/app-desktop]:     > 84 | 		).toBeVisible();
➤ YN0000: [@joplin/app-desktop]:          | 		  ^
➤ YN0000: [@joplin/app-desktop]:       85 |
➤ YN0000: [@joplin/app-desktop]:       86 | 		// Should render KaTeX (block)
➤ YN0000: [@joplin/app-desktop]:       87 | 		// toBeAttached: To be added to the DOM.
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]:         at /Users/runner/work/joplin/joplin/packages/app-desktop/integration-tests/main.spec.ts:84:5
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]:     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]:     Error: Timed out 5000ms waiting for expect(locator).toBeVisible()
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]:     Locator: locator('.rli-editor').locator('iframe[src$="note-viewer/index.html"]').frameLocator(':scope').locator('pre.mermaid text').filter({ hasText: 'bf59b2' })
➤ YN0000: [@joplin/app-desktop]:     Expected: visible
➤ YN0000: [@joplin/app-desktop]:     Received: <element(s) not found>
➤ YN0000: [@joplin/app-desktop]:     Call log:
➤ YN0000: [@joplin/app-desktop]:       - expect.toBeVisible with timeout 5000ms
➤ YN0000: [@joplin/app-desktop]:       - waiting for locator('.rli-editor').locator('iframe[src$="note-viewer/index.html"]').frameLocator(':scope').locator('pre.mermaid text').filter({ hasText: 'bf59b2' })
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]:       82 | 		await expect(
➤ YN0000: [@joplin/app-desktop]:       83 | 			viewerFrame.locator('pre.mermaid text', { hasText: testCommitId }),
➤ YN0000: [@joplin/app-desktop]:     > 84 | 		).toBeVisible();
➤ YN0000: [@joplin/app-desktop]:          | 		  ^
➤ YN0000: [@joplin/app-desktop]:       85 |
➤ YN0000: [@joplin/app-desktop]:       86 | 		// Should render KaTeX (block)
➤ YN0000: [@joplin/app-desktop]:       87 | 		// toBeAttached: To be added to the DOM.
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]:         at /Users/runner/work/joplin/joplin/packages/app-desktop/integration-tests/main.spec.ts:84:5
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]:     attachment #1: trace (application/zip) ─────────────────────────────────────────────────────────
➤ YN0000: [@joplin/app-desktop]:     test-results/main-main-mermaid-and-KaTeX-should-render-retry1/trace.zip
➤ YN0000: [@joplin/app-desktop]:     Usage:
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]:         yarn playwright show-trace test-results/main-main-mermaid-and-KaTeX-should-render-retry1/trace.zip

richTextEditor.spec.ts:8:6 › richTextEditor › HTML links should be preserved when editing a note

Count: 1
First: 2025-01-19
Last: 2025-01-19

➤ YN0000: [@joplin/app-desktop]:   2) richTextEditor.spec.ts:8:6 › richTextEditor › HTML links should be preserved when editing a note 
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]:     TimeoutError: locator.waitFor: Timeout 30000ms exceeded.
➤ YN0000: [@joplin/app-desktop]:     Call log:
➤ YN0000: [@joplin/app-desktop]:       - waiting for locator('.rli-editor').locator('iframe[src$="note-viewer/index.html"]').frameLocator(':scope').locator('a[data-from-md]') to be visible
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]:       20 | 		// Wait to render
➤ YN0000: [@joplin/app-desktop]:       21 | 		const viewerFrame = editor.getNoteViewerFrameLocator();
➤ YN0000: [@joplin/app-desktop]:     > 22 | 		await viewerFrame.locator('a[data-from-md]').waitFor();
➤ YN0000: [@joplin/app-desktop]:          | 		                                             ^
➤ YN0000: [@joplin/app-desktop]:       23 |
➤ YN0000: [@joplin/app-desktop]:       24 | 		// Should have an attached resource
➤ YN0000: [@joplin/app-desktop]:       25 | 		const codeMirrorContent = await editor.codeMirrorEditor.innerText();
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]:         at /home/runner/work/joplin/joplin/packages/app-desktop/integration-tests/richTextEditor.spec.ts:22:48

screens/Note › pressing "delete permanently" should permanently delete a note

Count: 1
First: 2025-01-09
Last: 2025-01-09

➤ YN0000: [@joplin/app-mobile]: FAIL components/screens/Note/Note.test.tsx (256.736 s)
➤ YN0000: [@joplin/app-mobile]:   ● screens/Note › pressing "delete permanently" should permanently delete a note
➤ YN0000: [@joplin/app-mobile]: 
➤ YN0000: [@joplin/app-mobile]:     Timed out in waitFor.
➤ YN0000: [@joplin/app-mobile]: 
➤ YN0000: [@joplin/app-mobile]:       118 | 		// State can update until the menu content is marked as in the process of refocusing (part of the
➤ YN0000: [@joplin/app-mobile]:       119 | 		// menu transition).
➤ YN0000: [@joplin/app-mobile]:     > 120 | 		await waitFor(async () => {
➤ YN0000: [@joplin/app-mobile]:           | 		             ^
➤ YN0000: [@joplin/app-mobile]:       121 | 			expect(await screen.findByTestId('menu-content-refocusing')).toBeVisible();
➤ YN0000: [@joplin/app-mobile]:       122 | 		});
➤ YN0000: [@joplin/app-mobile]:       123 | 	});
➤ YN0000: [@joplin/app-mobile]: 
➤ YN0000: [@joplin/app-mobile]:       at components/screens/Note/Note.test.tsx:120:16

noteList › arrow keys should navigate the note list

Count: 4
First: 2025-01-21
Last: 2025-02-24

Note: The test was retried twice, but every time with this error. It's as if there's some remaining state from the previous run? I wonder if, when it fails, we can kill the Jest process and retry from a clean one?

➤ YN0000: [@joplin/app-desktop]:     Error: Timed out 5000ms waiting for expect(locator).toHaveAttribute(expected)
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]:     Locator: locator('.rli-noteList').getByRole('option', { name: 'note_3' })
➤ YN0000: [@joplin/app-desktop]:     Expected string: "true"
➤ YN0000: [@joplin/app-desktop]:     Received string: "false"
➤ YN0000: [@joplin/app-desktop]:   1) noteList.spec.ts:78:6 › noteList › arrow keys should navigate the note list ───────────────────
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]:     Error: Timed out 5000ms waiting for expect(locator).toBeVisible()
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]:     Locator: locator('.rli-noteList').getByRole('option', { name: 'note_1' })
➤ YN0000: [@joplin/app-desktop]:     Expected: visible
➤ YN0000: [@joplin/app-desktop]:     Received: <element(s) not found>
➤ YN0000: [@joplin/app-desktop]:     Call log:
➤ YN0000: [@joplin/app-desktop]:       - expect.toBeVisible with timeout 5000ms
➤ YN0000: [@joplin/app-desktop]:       - waiting for locator('.rli-noteList').getByRole('option', { name: 'note_1' })
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]:        99 | 		await expect(note3Item).toBeVisible();
➤ YN0000: [@joplin/app-desktop]:       100 | 		await expect(note2Item).toBeVisible();
➤ YN0000: [@joplin/app-desktop]:     > 101 | 		await expect(note1Item).toBeVisible();
➤ YN0000: [@joplin/app-desktop]:           | 		                        ^
➤ YN0000: [@joplin/app-desktop]:       102 |
➤ YN0000: [@joplin/app-desktop]:       103 | 		await noteList.expectNoteToBeSelected('note_4');
➤ YN0000: [@joplin/app-desktop]:       104 |
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]:         at /Users/runner/work/joplin/joplin/packages/app-desktop/integration-tests/noteList.spec.ts:101:27

services/RevisionService › should not create a revision if there is already a recent one

Count: 1
First: 2025-02-10

➤ YN0000: [@joplin/lib]: FAIL services/RevisionService.test.js (55.858 s)
➤ YN0000: [@joplin/lib]:   ● services/RevisionService › should not create a revision if there is already a recent one
➤ YN0000: [@joplin/lib]: 
➤ YN0000: [@joplin/lib]:     expect(received).toBe(expected) // Object.is equality
➤ YN0000: [@joplin/lib]: 
➤ YN0000: [@joplin/lib]:     Expected: true
➤ YN0000: [@joplin/lib]:     Received: false
➤ YN0000: [@joplin/lib]: 
➤ YN0000: [@joplin/lib]:       517 | 		await Note.save({ id: n1_v0.id, title: 'hello 3' });
➤ YN0000: [@joplin/lib]:       518 | 		await revisionService().collectRevisions(); // No rev because time since last rev is less than the required 'interval between revisions'
➤ YN0000: [@joplin/lib]:     > 519 | 		expect(Date.now() - interval < timeRev2).toBe(true); // check the computer is not too slow for this test
➤ YN0000: [@joplin/lib]:           | 		                                         ^
➤ YN0000: [@joplin/lib]:       520 | 		expect((await Revision.all()).length).toBe(2);
➤ YN0000: [@joplin/lib]:       521 | 	}));
➤ YN0000: [@joplin/lib]:       522 |
➤ YN0000: [@joplin/lib]: 
➤ YN0000: [@joplin/lib]:       at Object.toBe (services/RevisionService.test.ts:519:44)

services/RevisionService › should not create a revision if there is already a recent one

Count: 1
First: 2025-02-11

➤ YN0000: [@joplin/app-desktop]:   3) sidebar.spec.ts:105:6 › sidebar › double-clicking should collapse/expand folders in the sidebar 
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]:     Error: Timed out 5000ms waiting for expect(locator).not.toBeVisible()
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]:     Locator: locator('.rli-sideBar').getByRole('treeitem', { name: 'Folder B' })
➤ YN0000: [@joplin/app-desktop]:     Expected: not visible
➤ YN0000: [@joplin/app-desktop]:     Received: visible
➤ YN0000: [@joplin/app-desktop]:     Call log:
➤ YN0000: [@joplin/app-desktop]:       - expect.not.toBeVisible with timeout 5000ms
➤ YN0000: [@joplin/app-desktop]:       - waiting for locator('.rli-sideBar').getByRole('treeitem', { name: 'Folder B' })
➤ YN0000: [@joplin/app-desktop]:       -   locator resolved to <div tabindex="-1" data-type="2" aria-level="2" role="treeitem" aria-setsize="7" draggable="true" aria-posinset="4" aria-selected="false" data-id="666e086c714e4449bed4fa8fc475abd0" data-folder-id="666e086c714e4449bed4fa8fc475abd0" class="list-item-wrapper -highlight-on-hover  list-item-container list-item-depth-0 ">…</div>
➤ YN0000: [@joplin/app-desktop]:       -   unexpected value "visible"
➤ YN0000: [@joplin/app-desktop]:       -   locator resolved to <div tabindex="-1" data-type="2" aria-level="2" role="treeitem" aria-setsize="7" draggable="true" aria-posinset="4" aria-selected="false" data-id="666e086c714e4449bed4fa8fc475abd0" data-folder-id="666e086c714e4449bed4fa8fc475abd0" class="list-item-wrapper -highlight-on-hover  list-item-container list-item-depth-0 ">…</div>
➤ YN0000: [@joplin/app-desktop]:       -   unexpected value "visible"
➤ YN0000: [@joplin/app-desktop]:       -   locator resolved to <div tabindex="-1" data-type="2" aria-level="2" role="treeitem" aria-setsize="7" draggable="true" aria-posinset="4" aria-selected="false" data-id="666e086c714e4449bed4fa8fc475abd0" data-folder-id="666e086c714e4449bed4fa8fc475abd0" class="list-item-wrapper -highlight-on-hover  list-item-container list-item-depth-0 ">…</div>
➤ YN0000: [@joplin/app-desktop]:       -   unexpected value "visible"
➤ YN0000: [@joplin/app-desktop]:       -   locator resolved to <div tabindex="-1" data-type="2" aria-level="2" role="treeitem" aria-setsize="7" draggable="true" aria-posinset="4" aria-selected="false" data-id="666e086c714e4449bed4fa8fc475abd0" data-folder-id="666e086c714e4449bed4fa8fc475abd0" class="list-item-wrapper -highlight-on-hover  list-item-container list-item-depth-0 ">…</div>
➤ YN0000: [@joplin/app-desktop]:       -   unexpected value "visible"
➤ YN0000: [@joplin/app-desktop]:       -   locator resolved to <div tabindex="-1" data-type="2" aria-level="2" role="treeitem" aria-setsize="7" draggable="true" aria-posinset="4" aria-selected="false" data-id="666e086c714e4449bed4fa8fc475abd0" data-folder-id="666e086c714e4449bed4fa8fc475abd0" class="list-item-wrapper -highlight-on-hover  list-item-container list-item-depth-0 ">…</div>
➤ YN0000: [@joplin/app-desktop]:       -   unexpected value "visible"
➤ YN0000: [@joplin/app-desktop]:       -   locator resolved to <div tabindex="-1" data-type="2" aria-level="2" role="treeitem" aria-setsize="7" draggable="true" aria-posinset="4" aria-selected="false" data-id="666e086c714e4449bed4fa8fc475abd0" data-folder-id="666e086c714e4449bed4fa8fc475abd0" class="list-item-wrapper -highlight-on-hover  list-item-container list-item-depth-0 ">…</div>
➤ YN0000: [@joplin/app-desktop]:       -   unexpected value "visible"
➤ YN0000: [@joplin/app-desktop]:       -   locator resolved to <div tabindex="-1" data-type="2" aria-level="2" role="treeitem" aria-setsize="7" draggable="true" aria-posinset="4" aria-selected="false" data-id="666e086c714e4449bed4fa8fc475abd0" data-folder-id="666e086c714e4449bed4fa8fc475abd0" class="list-item-wrapper -highlight-on-hover  list-item-container list-item-depth-0 ">…</div>
➤ YN0000: [@joplin/app-desktop]:       -   unexpected value "visible"
➤ YN0000: [@joplin/app-desktop]:       -   locator resolved to <div tabindex="-1" data-type="2" aria-level="2" role="treeitem" aria-setsize="7" draggable="true" aria-posinset="4" aria-selected="false" data-id="666e086c714e4449bed4fa8fc475abd0" data-folder-id="666e086c714e4449bed4fa8fc475abd0" class="list-item-wrapper -highlight-on-hover  list-item-container list-item-depth-0 ">…</div>
➤ YN0000: [@joplin/app-desktop]:       -   unexpected value "visible"
➤ YN0000: [@joplin/app-desktop]:       -   locator resolved to <div tabindex="-1" data-type="2" aria-level="2" role="treeitem" aria-setsize="7" draggable="true" aria-posinset="4" aria-selected="false" data-id="666e086c714e4449bed4fa8fc475abd0" data-folder-id="666e086c714e4449bed4fa8fc475abd0" class="list-item-wrapper -highlight-on-hover  list-item-container list-item-depth-0 ">…</div>
➤ YN0000: [@joplin/app-desktop]:       -   unexpected value "visible"
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]:       117 | 		// Collapse
➤ YN0000: [@joplin/app-desktop]:       118 | 		await testFolderA.dblclick();
➤ YN0000: [@joplin/app-desktop]:     > 119 | 		await expect(testFolderB).not.toBeVisible();
➤ YN0000: [@joplin/app-desktop]:           | 		                              ^
➤ YN0000: [@joplin/app-desktop]:       120 |
➤ YN0000: [@joplin/app-desktop]:       121 | 		// Expand
➤ YN0000: [@joplin/app-desktop]:       122 | 		await testFolderA.dblclick();
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]:         at /home/runner/work/joplin/joplin/packages/app-desktop/integration-tests/sidebar.spec.ts:119:33

sidebar › all notes section should list all notes

Count: 1
First: 2025-02-18

➤ YN0000: [@joplin/app-desktop]:   4) sidebar.spec.ts:79:6 › sidebar › all notes section should list all notes ──────────────────────
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]:     Error: Timed out 5000ms waiting for expect(locator).toBeAttached()
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]:     Locator: getByText('A note in Folder A')
➤ YN0000: [@joplin/app-desktop]:     Expected: attached
➤ YN0000: [@joplin/app-desktop]:     Received: <element(s) not found>
➤ YN0000: [@joplin/app-desktop]:     Call log:
➤ YN0000: [@joplin/app-desktop]:       - expect.toBeAttached with timeout 5000ms
➤ YN0000: [@joplin/app-desktop]:       - waiting for getByText('A note in Folder A')
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]:       87 |
➤ YN0000: [@joplin/app-desktop]:       88 | 		await mainScreen.createNewNote('A note in Folder A');
➤ YN0000: [@joplin/app-desktop]:     > 89 | 		await expect(mainWindow.getByText('A note in Folder A')).toBeAttached();
➤ YN0000: [@joplin/app-desktop]:          | 		                                                         ^
➤ YN0000: [@joplin/app-desktop]:       90 | 		await mainScreen.createNewNote('Another note in Folder A');
➤ YN0000: [@joplin/app-desktop]:       91 |
➤ YN0000: [@joplin/app-desktop]:       92 | 		const testFolderB = await sidebar.createNewFolder('Folder B');
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]:         at /Users/runner/work/joplin/joplin/packages/app-desktop/integration-tests/sidebar.spec.ts:89:60

richTextEditor › disabling tab indentation should also disable it in code dialogs

Count: 1
First: 2025-02-21

➤ YN0000: [@joplin/app-desktop]:   3) richTextEditor.spec.ts:166:6 › richTextEditor › disabling tab indentation should also disable it in code dialogs 
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]:     TimeoutError: locator.click: Timeout 30000ms exceeded.
➤ YN0000: [@joplin/app-desktop]:     Call log:
➤ YN0000: [@joplin/app-desktop]:       - waiting for locator('.rli-editor').getByRole('button', { name: 'Code Block' })
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]:       172 | 		await editor.richTextEditor.click();
➤ YN0000: [@joplin/app-desktop]:       173 |
➤ YN0000: [@joplin/app-desktop]:     > 174 | 		await editor.toggleCodeBlockButton.click();
➤ YN0000: [@joplin/app-desktop]:           | 		                                   ^
➤ YN0000: [@joplin/app-desktop]:       175 | 		const codeEditor = editor.richTextCodeEditor;
➤ YN0000: [@joplin/app-desktop]:       176 | 		await codeEditor.waitFor();
➤ YN0000: [@joplin/app-desktop]:       177 |
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]:         at /home/runner/work/joplin/joplin/packages/app-desktop/integration-tests/richTextEditor.spec.ts:174:38

main › should correctly resize large images

Count: 1
First: 2025-03-09

Note: Retried multiple times but each attempts fails.

➤ YN0000: [@joplin/app-desktop]:   1) main.spec.ts:99:6 › main › should correctly resize large images ───────────────────────────────
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]:     Error: locator.waitFor: Error: strict mode violation: getByAltText('large-jpg-image-with-exif-rotation.jpg') resolved to 2 elements:
➤ YN0000: [@joplin/app-desktop]:         1) <img title="" data-from-md="" alt="large-jpg-image-with-exif-rotation.jpg" data-resource-id="4f59dd12c5f8412baad466837fea2080" src="joplin-content://note-viewer//Users/runner/work/joplin/joplin/packages/app-desktop/integration-tests/test-profile/2fO2f566Jmpj39FQcmxjgN/resources//4f59dd12c5f8412baad466837fea2080.jpg?t=1741438618781"/> aka getByRole('img', { name: 'large-jpg-image-with-exif-' }).first()
➤ YN0000: [@joplin/app-desktop]:         2) <img title="" data-from-md="" alt="large-jpg-image-with-exif-rotation.jpg" data-resource-id="f1cdf0a1244343e3a259455fe880e75c" src="joplin-content://note-viewer//Users/runner/work/joplin/joplin/packages/app-desktop/integration-tests/test-profile/2fO2f566Jmpj39FQcmxjgN/resources//f1cdf0a1244343e3a259455fe880e75c.jpg?t=1741438618714"/> aka getByRole('img', { name: 'large-jpg-image-with-exif-' }).nth(1)
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]:     Call log:
➤ YN0000: [@joplin/app-desktop]:       - waiting for locator('.rli-editor').locator('iframe[src$="note-viewer/index.html"]').frameLocator(':scope').getByAltText('large-jpg-image-with-exif-rotation.jpg')
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]:        at util/getImageSourceSize.ts:6
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]:       4 | 	// Use state: 'attached' -- we don't need the image to be on the screen (just present
➤ YN0000: [@joplin/app-desktop]:       5 | 	// in the DOM).
➤ YN0000: [@joplin/app-desktop]:     > 6 | 	await imageLocator.waitFor({ state: 'attached' });
➤ YN0000: [@joplin/app-desktop]:         | 	                   ^
➤ YN0000: [@joplin/app-desktop]:       7 |
➤ YN0000: [@joplin/app-desktop]:       8 | 	// We load a copy of the image to avoid returning an overriden width set with
➤ YN0000: [@joplin/app-desktop]:       9 | 	//    .width = some_number
➤ YN0000: [@joplin/app-desktop]: 
➤ YN0000: [@joplin/app-desktop]:         at getImageSourceSize (/Users/runner/work/joplin/joplin/packages/app-desktop/integration-tests/util/getImageSourceSize.ts:6:21)
➤ YN0000: [@joplin/app-desktop]:         at /Users/runner/work/joplin/joplin/packages/app-desktop/integration-tests/main.spec.ts:121:44
@laurent22 laurent22 added bug It's a bug high High priority issues labels Dec 18, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug It's a bug high High priority issues
Projects
None yet
Development

No branches or pull requests

1 participant