Skip to content

feat(core): adapt new lifecycle #49154

feat(core): adapt new lifecycle

feat(core): adapt new lifecycle #49154

Triggered via pull request September 8, 2026 19:22
Status Cancelled
Total duration 8m 18s
Artifacts 8

build-test.yml

on: pull_request
Build Server native
7m 47s
Build Server native
Build AFFiNE native (x86_64-unknown-linux-gnu)
7m 48s
Build AFFiNE native (x86_64-unknown-linux-gnu)
Copilot test filter
11s
Copilot test filter
Matrix: build-native-macos
Matrix: build-native-windows
Mobile native build filter
8s
Mobile native build filter
Build @affine/electron renderer
57s
Build @affine/electron renderer
Rust test filter
7s
Rust test filter
Matrix: Analyze
Matrix: E2E BlockSuite Test
Matrix: E2E Mobile Test
Matrix: E2E Test
Lint
3m 14s
Lint
Typecheck
1m 41s
Typecheck
Check yarn binary
10s
Check yarn binary
E2E BlockSuite Cross Browser Test
3m 26s
E2E BlockSuite Cross Browser Test
Matrix: Server Test
Check Git Status
0s
Check Git Status
Server Test with Elasticsearch
0s
Server Test with Elasticsearch
Server Test with Embedded Search
0s
Server Test with Embedded Search
Server Test with Manticore Search
0s
Server Test with Manticore Search
Server E2E Test
0s
Server E2E Test
Matrix: Unit Test
Native Unit Test
Native Unit Test
Matrix: cloud-e2e-test
Matrix: Frontend Copilot E2E Test
Server Copilot Api Test
0s
Server Copilot Api Test
Matrix: desktop-test
3, 2, 1 Launch
3s
3, 2, 1 Launch
Fit to window
Zoom out
Zoom in

Annotations

57 errors, 36 warnings, and 9 notices
Lint Rust
Process completed with exit code 1.
e2e/clipboard/list.spec.ts:310:1 › paste non-nested lists to a nested list: tests/blocksuite/e2e/utils/asserts.ts#L171
4) e2e/clipboard/list.spec.ts:310:1 › paste non-nested lists to a nested list ──────────────────── Error: expect(received).toEqual(expected) // deep equality - Expected - 2 + Received + 2 Array [ - "123", - "456aaa", + "aaa123", + "456", "bbb", ] Call Log: - Timeout 5000ms exceeded while waiting on the predicate at utils/asserts.ts:171 169 | 170 | export async function assertRichTexts(page: Page, texts: string[]) { > 171 | await expect | ^ 172 | .poll(async () => { 173 | return page.evaluate(() => { 174 | const editorHost = document.querySelector('editor-host'); at assertRichTexts (/home/runner/work/AFFiNE/AFFiNE/tests/blocksuite/e2e/utils/asserts.ts:171:3) at /home/runner/work/AFFiNE/AFFiNE/tests/blocksuite/e2e/clipboard/list.spec.ts:345:3
e2e/clipboard/list.spec.ts:136:1 › paste a nested list to a nested list: tests/blocksuite/e2e/utils/asserts.ts#L171
3) e2e/clipboard/list.spec.ts:136:1 › paste a nested list to a nested list ─────────────────────── Error: expect(received).toEqual(expected) // deep equality - Expected - 2 + Received + 2 Array [ "aaa", - "aaa", + "bbbaaa", "bbb", - "cccbbb", + "ccc", "ccc", ] Call Log: - Timeout 5000ms exceeded while waiting on the predicate at utils/asserts.ts:171 169 | 170 | export async function assertRichTexts(page: Page, texts: string[]) { > 171 | await expect | ^ 172 | .poll(async () => { 173 | return page.evaluate(() => { 174 | const editorHost = document.querySelector('editor-host'); at assertRichTexts (/home/runner/work/AFFiNE/AFFiNE/tests/blocksuite/e2e/utils/asserts.ts:171:3) at /home/runner/work/AFFiNE/AFFiNE/tests/blocksuite/e2e/clipboard/list.spec.ts:168:3
e2e/bookmark.spec.ts:343:1 › bookmark can be dragged from note to surface top level block: tests/blocksuite/e2e/utils/actions/drag.ts#L188
2) e2e/bookmark.spec.ts:343:1 › bookmark can be dragged from note to surface top level block ───── Error: at utils/actions/drag.ts:188 186 | .boundingBox(); 187 | if (!handle) { > 188 | throw new Error(); | ^ 189 | } 190 | await page.mouse.move( 191 | handle.x + handle.width / 2, at dragBlockToPoint (/home/runner/work/AFFiNE/AFFiNE/tests/blocksuite/e2e/utils/actions/drag.ts:188:11) at /home/runner/work/AFFiNE/AFFiNE/tests/blocksuite/e2e/bookmark.spec.ts:359:3
e2e/attachment.spec.ts:187:1 › should rename attachment works: tests/blocksuite/e2e/attachment.spec.ts#L73
1) e2e/attachment.spec.ts:187:1 › should rename attachment works ───────────────────────────────── TimeoutError: page.waitForEvent: Timeout 5000ms exceeded while waiting for event "filechooser" =========================== logs =========================== waiting for event "filechooser" ============================================================ 71 | await expect(slashMenu).toBeVisible(); 72 | > 73 | const fileChooser = page.waitForEvent('filechooser'); | ^ 74 | await pressEnter(page); 75 | await sleep(100); 76 | await (await fileChooser).setFiles(FILE_PATH); at insertAttachment (/home/runner/work/AFFiNE/AFFiNE/tests/blocksuite/e2e/attachment.spec.ts:73:30) at /home/runner/work/AFFiNE/AFFiNE/tests/blocksuite/e2e/attachment.spec.ts:205:3
e2e/linked-page.spec.ts:586:3 › linked page with clipboard › paste linked page should paste as linked page: tests/blocksuite/e2e/linked-page.spec.ts#L602
2) e2e/linked-page.spec.ts:586:3 › linked page with clipboard › paste linked page should paste as linked page Error: expect(string).toMatchSnapshot(expected) failed @@ -17,11 +17,11 @@ "reference": { "pageId": "3", "type": "LinkedPage" } }, - "insert": " " + "insert": " " } ] }, "type": "text" }, Snapshot: paste linked page should paste as linked page.json 600 | await pasteByKeyboard(page); 601 | const json = await getPageSnapshot(page, true); > 602 | expect(json).toMatchSnapshot(`${testInfo.title}.json`); | ^ 603 | }); 604 | 605 | test('duplicated linked page should paste as linked page', async ({ at /home/runner/work/AFFiNE/AFFiNE/tests/blocksuite/e2e/linked-page.spec.ts:602:18
e2e/link.spec.ts:145:1 › type character in link should not jump out link node: tests/blocksuite/e2e/link.spec.ts#L153
1) e2e/link.spec.ts:145:1 › type character in link should not jump out link node ───────────────── Error: expect(string).toMatchSnapshot(expected) failed @@ -11,17 +11,17 @@ "collapsed": false, "text": { "$blocksuite:internal:text$": true, "delta": [ { - "insert": "Hello" + "insert": "IN_LINKHello" }, { "attributes": { "link": "http://example.com" }, - "insert": "link texIN_LINKt" + "insert": "link text" } ] }, "type": "text" }, Snapshot: type character in link should not jump out link node.json 151 | await page.keyboard.press('ArrowLeft'); 152 | await type(page, 'IN_LINK'); > 153 | expect(await getPageSnapshot(page, true)).toMatchSnapshot( | ^ 154 | `${testInfo.title}.json` 155 | ); 156 | }); at /home/runner/work/AFFiNE/AFFiNE/tests/blocksuite/e2e/link.spec.ts:153:45
[Mobile Chrome] › e2e/explorer-tag.spec.ts:58:1 › create a tag from navigation panel: tests/kit/src/mobile.ts#L17
1) [Mobile Chrome] › e2e/explorer-tag.spec.ts:58:1 › create a tag from navigation panel ────────── Error: expect(locator).toBeVisible() failed Locator: locator('.affine-page-viewport[data-mode="page"]') Expected: visible Timeout: 30000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 30000ms - waiting for locator('.affine-page-viewport[data-mode="page"]') at ../../kit/src/mobile.ts:17 15 | await page.goto('/'); 16 | const editor = page.locator('.affine-page-viewport[data-mode="page"]'); > 17 | await expect(editor).toBeVisible({ | ^ 18 | timeout: 30 * 1000, 19 | }); 20 | await page.goto('/'); at Object.page (/home/runner/work/AFFiNE/AFFiNE/tests/kit/src/mobile.ts:17:26)
e2e/selection/native.spec.ts:1408:1 › should select with shift-click: tests/blocksuite/e2e/selection/native.spec.ts#L1419
5) e2e/selection/native.spec.ts:1408:1 › should select with shift-click ────────────────────────── Error: expect(received).toContain(expected) // indexOf Expected substring: "4567" Received string: "" 1417 | modifiers: ['Shift'], 1418 | }); > 1419 | expect(await getSelectedText(page)).toContain('4567'); | ^ 1420 | }); 1421 | 1422 | test('should collapse to end when press arrow-right on multi-line selection', async ({ at /home/runner/work/AFFiNE/AFFiNE/tests/blocksuite/e2e/selection/native.spec.ts:1419:39
e2e/selection/block.spec.ts:156:1 › click the list icon can select and copy: tests/blocksuite/e2e/utils/asserts.ts#L171
4) e2e/selection/block.spec.ts:156:1 › click the list icon can select and copy ─────────────────── Error: expect(received).toEqual(expected) // deep equality - Expected - 1 + Received + 1 Array [ "123", "456", - "789123", + "123789", ] Call Log: - Timeout 5000ms exceeded while waiting on the predicate at utils/asserts.ts:171 169 | 170 | export async function assertRichTexts(page: Page, texts: string[]) { > 171 | await expect | ^ 172 | .poll(async () => { 173 | return page.evaluate(() => { 174 | const editorHost = document.querySelector('editor-host'); at assertRichTexts (/home/runner/work/AFFiNE/AFFiNE/tests/blocksuite/e2e/utils/asserts.ts:171:3) at /home/runner/work/AFFiNE/AFFiNE/tests/blocksuite/e2e/selection/block.spec.ts:167:3
e2e/paragraph.spec.ts:656:1 › delete at start of paragraph immediately following list: tests/blocksuite/e2e/utils/asserts.ts#L608
3) e2e/paragraph.spec.ts:656:1 › delete at start of paragraph immediately following list ───────── Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(received).toEqual(expected) // deep equality - Expected - 1 + Received + 1 Array [ "text", - "text", + "bulleted", ] at utils/asserts.ts:608 606 | ); 607 | }); > 608 | expect(actual).toEqual(blockTypes); | ^ 609 | } 610 | 611 | type MimeType = 'text/plain' | 'blocksuite/x-c+w' | 'text/html'; at assertBlockTypes (/home/runner/work/AFFiNE/AFFiNE/tests/blocksuite/e2e/utils/asserts.ts:608:18) at /home/runner/work/AFFiNE/AFFiNE/tests/blocksuite/e2e/paragraph.spec.ts:691:3
e2e/paragraph.spec.ts:656:1 › delete at start of paragraph immediately following list: tests/blocksuite/e2e/utils/asserts.ts#L608
3) e2e/paragraph.spec.ts:656:1 › delete at start of paragraph immediately following list ───────── Error: expect(received).toEqual(expected) // deep equality - Expected - 1 + Received + 1 Array [ "text", - "text", + "bulleted", ] at utils/asserts.ts:608 606 | ); 607 | }); > 608 | expect(actual).toEqual(blockTypes); | ^ 609 | } 610 | 611 | type MimeType = 'text/plain' | 'blocksuite/x-c+w' | 'text/html'; at assertBlockTypes (/home/runner/work/AFFiNE/AFFiNE/tests/blocksuite/e2e/utils/asserts.ts:608:18) at /home/runner/work/AFFiNE/AFFiNE/tests/blocksuite/e2e/paragraph.spec.ts:691:3
e2e/paragraph.spec.ts:559:1 › paragraph with child block should work at enter: tests/blocksuite/e2e/paragraph.spec.ts#L577
2) e2e/paragraph.spec.ts:559:1 › paragraph with child block should work at enter ───────────────── Error: expect(string).toMatchSnapshot(expected) failed @@ -2,30 +2,27 @@ "children": [ { "children": [ { "children": [ - { - "children": [ - ], - "flavour": "affine:paragraph", - "id": "4", - "props": { - "collapsed": false, - "text": { - "$blocksuite:internal:text$": true, - "delta": [ - { - "insert": "789" - } - ] - }, - "type": "text" - }, - "type": "block", - "version": 1 + ], + "flavour": "affine:paragraph", + "id": "2", + "props": { + "collapsed": false, + "text": { + "$blocksuite:internal:text$": true, + "delta": [ + ] }, + "type": "text" + }, + "type": "block", + "version": 1 + }, + { + "children": [ { "children": [ ], "flavour": "affine:paragraph", "id": "3", @@ -44,18 +41,18 @@ "type": "block", "version": 1 } ], "flavour": "affine:paragraph", - "id": "2", + "id": "4", "props": { "collapsed": false, "text": { "$blocksuite:internal:text$": true, "delta": [ { - "insert": "123" + "insert": "789123" } ] }, "type": "text" }, Snapshot: paragraph with child block should work at enter_final.json 575 | await pressEnter(page); 576 | await type(page, '789'); > 577 | expect(await getPageSnapshot(page, true)).toMatchSnapshot( | ^ 578 | `${testInfo.title}_final.json` 579 | ); 580 | }); at /home/runner/work/AFFiNE/AFFiNE/tests/blocksuite/e2e/paragraph.spec.ts:577:45
e2e/list.spec.ts:497:1 › enter list block with non-empty text: tests/blocksuite/e2e/utils/asserts.ts#L418
1) e2e/list.spec.ts:497:1 › enter list block with non-empty text ───────────────────────────────── Error: expect(received).toEqual(expected) // deep equality - Expected - 5 + Received + 1 - Array [ - "6", - "3", - "4", - ] + Array [] Call Log: - Timeout 5000ms exceeded while waiting on the predicate at utils/asserts.ts:418 416 | ids: string[] 417 | ) { > 418 | await expect | ^ 419 | .poll(async () => { 420 | return page.evaluate( 421 | ({ blockId }) => { at assertBlockChildrenIds (/home/runner/work/AFFiNE/AFFiNE/tests/blocksuite/e2e/utils/asserts.ts:418:3) at /home/runner/work/AFFiNE/AFFiNE/tests/blocksuite/e2e/list.spec.ts:518:3
[Mobile Safari] › e2e/home.spec.ts:18:1 › stale first-open state still restores one local workspace: tests/affine-mobile/e2e/home.spec.ts#L44
2) [Mobile Safari] › e2e/home.spec.ts:18:1 › stale first-open state still restores one local workspace Retry #2 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toBeVisible() failed Locator: getByRole('searchbox') Expected: visible Timeout: 15000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 15000ms - waiting for getByRole('searchbox') 42 | `http://localhost:8080/workspace/${firstWorkspace?.id ?? ''}/home` 43 | ); > 44 | await expect(page.getByRole('searchbox')).toBeVisible(); | ^ 45 | await page 46 | .locator('[data-testid="workspace-selector-trigger"]:visible') 47 | .click(); at /home/runner/work/AFFiNE/AFFiNE/tests/affine-mobile/e2e/home.spec.ts:44:45
[Mobile Safari] › e2e/home.spec.ts:18:1 › stale first-open state still restores one local workspace: tests/affine-mobile/e2e/home.spec.ts#L44
2) [Mobile Safari] › e2e/home.spec.ts:18:1 › stale first-open state still restores one local workspace Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toBeVisible() failed Locator: getByRole('searchbox') Expected: visible Timeout: 15000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 15000ms - waiting for getByRole('searchbox') 42 | `http://localhost:8080/workspace/${firstWorkspace?.id ?? ''}/home` 43 | ); > 44 | await expect(page.getByRole('searchbox')).toBeVisible(); | ^ 45 | await page 46 | .locator('[data-testid="workspace-selector-trigger"]:visible') 47 | .click(); at /home/runner/work/AFFiNE/AFFiNE/tests/affine-mobile/e2e/home.spec.ts:44:45
[Mobile Safari] › e2e/home.spec.ts:18:1 › stale first-open state still restores one local workspace: tests/affine-mobile/e2e/home.spec.ts#L44
2) [Mobile Safari] › e2e/home.spec.ts:18:1 › stale first-open state still restores one local workspace Error: expect(locator).toBeVisible() failed Locator: getByRole('searchbox') Expected: visible Timeout: 15000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 15000ms - waiting for getByRole('searchbox') 42 | `http://localhost:8080/workspace/${firstWorkspace?.id ?? ''}/home` 43 | ); > 44 | await expect(page.getByRole('searchbox')).toBeVisible(); | ^ 45 | await page 46 | .locator('[data-testid="workspace-selector-trigger"]:visible') 47 | .click(); at /home/runner/work/AFFiNE/AFFiNE/tests/affine-mobile/e2e/home.spec.ts:44:45
[Mobile Safari] › e2e/detail.spec.ts:32:1 › switch to edgeless mode: tests/affine-mobile/e2e/detail.spec.ts#L37
1) [Mobile Safari] › e2e/detail.spec.ts:32:1 › switch to edgeless mode ─────────────────────────── Error: expect(locator).toBeVisible() failed Locator: locator('.affine-edgeless-viewport') Expected: visible Timeout: 15000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 15000ms - waiting for locator('.affine-edgeless-viewport') 35 | 36 | await page.getByRole('button', { name: 'Default to Edgeless mode' }).click(); > 37 | await expect(page.locator('.affine-edgeless-viewport')).toBeVisible(); | ^ 38 | }); 39 | 40 | test('can show doc info', async ({ page }) => { at /home/runner/work/AFFiNE/AFFiNE/tests/affine-mobile/e2e/detail.spec.ts:37:59
e2e/drag.spec.ts:509:1 › should get to selected block when dragging unselected block: tests/blocksuite/e2e/drag.spec.ts#L549
1) e2e/drag.spec.ts:509:1 › should get to selected block when dragging unselected block ────────── Error: expect(locator).toHaveCount(expected) failed Locator: locator('affine-block-selection').filter({ visible: true }) Expected: 1 Received: 0 Timeout: 5000ms Call log: - Expect "toHaveCount" with timeout 5000ms - waiting for locator('affine-block-selection').filter({ visible: true }) 9 × locator resolved to 0 elements - unexpected value "0" 547 | await page.mouse.up(); 548 | > 549 | await expect(blockSelections).toHaveCount(1); | ^ 550 | 551 | // FIXME(DND) 552 | // await assertRichTexts(page, ['456', '123']); at /home/runner/work/AFFiNE/AFFiNE/tests/blocksuite/e2e/drag.spec.ts:549:33
Run native tests
Canceling since a higher priority waiting request for Build & Test-refs/pull/15575/merge exists
Run native tests
The operation was canceled.
E2E Test (5)
Canceling since a higher priority waiting request for Build & Test-refs/pull/15575/merge exists
E2E Test (5)
The operation was canceled.
Build AFFiNE native (aarch64-pc-windows-msvc)
Canceling since a higher priority waiting request for Build & Test-refs/pull/15575/merge exists
Build AFFiNE native (aarch64-pc-windows-msvc)
No files were found with the provided path: E:\AFFiNE/packages/frontend/native/affine.win32-arm64-msvc.node. No artifacts will be uploaded.
Build AFFiNE native (aarch64-pc-windows-msvc)
The operation was canceled.
E2E Test (1)
Canceling since a higher priority waiting request for Build & Test-refs/pull/15575/merge exists
E2E Test (1)
The operation was canceled.
E2E Test (3)
Canceling since a higher priority waiting request for Build & Test-refs/pull/15575/merge exists
E2E Test (3)
The operation was canceled.
Build Server native
Canceling since a higher priority waiting request for Build & Test-refs/pull/15575/merge exists
Build Server native
No files were found with the provided path: ./packages/backend/native/server-native.node. No artifacts will be uploaded.
Build Server native
The operation was canceled.
Build AFFiNE native (x86_64-pc-windows-msvc)
Canceling since a higher priority waiting request for Build & Test-refs/pull/15575/merge exists
Build AFFiNE native (x86_64-pc-windows-msvc)
No files were found with the provided path: E:\AFFiNE/packages/frontend/native/affine.win32-x64-msvc.node. No artifacts will be uploaded.
Build AFFiNE native (x86_64-pc-windows-msvc)
The operation was canceled.
Build AFFiNE native (x86_64-unknown-linux-gnu)
Canceling since a higher priority waiting request for Build & Test-refs/pull/15575/merge exists
E2E Test (2)
Canceling since a higher priority waiting request for Build & Test-refs/pull/15575/merge exists
Build AFFiNE native (x86_64-unknown-linux-gnu)
No files were found with the provided path: /home/runner/work/AFFiNE/AFFiNE/packages/frontend/native/affine.linux-x64-gnu.node. No artifacts will be uploaded.
Build AFFiNE native (x86_64-unknown-linux-gnu)
The operation was canceled.
E2E Test (2)
The operation was canceled.
E2E Test (4)
Canceling since a higher priority waiting request for Build & Test-refs/pull/15575/merge exists
E2E Test (4)
The operation was canceled.
Build Android app
Canceling since a higher priority waiting request for Build & Test-refs/pull/15575/merge exists
Build Android app
The operation was canceled.
Test Android app
Canceling since a higher priority waiting request for Build & Test-refs/pull/15575/merge exists
Test Android app
The operation was canceled.
Build AFFiNE native (x86_64-apple-darwin)
Canceling since a higher priority waiting request for Build & Test-refs/pull/15575/merge exists
Build AFFiNE native (x86_64-apple-darwin)
No files were found with the provided path: /Users/runner/work/AFFiNE/AFFiNE/packages/frontend/native/affine.darwin-x64.node. No artifacts will be uploaded.
Build AFFiNE native (x86_64-apple-darwin)
The operation was canceled.
Build AFFiNE native (aarch64-apple-darwin)
Canceling since a higher priority waiting request for Build & Test-refs/pull/15575/merge exists
Build AFFiNE native (aarch64-apple-darwin)
No files were found with the provided path: /Users/runner/work/AFFiNE/AFFiNE/packages/frontend/native/affine.darwin-arm64.node. No artifacts will be uploaded.
Build AFFiNE native (aarch64-apple-darwin)
The operation was canceled.
Build iOS app
Canceling since a higher priority waiting request for Build & Test-refs/pull/15575/merge exists
Build iOS app
The operation was canceled.
3, 2, 1 Launch
Process completed with exit code 1.
Build & Test
Canceling since a higher priority waiting request for Build & Test-refs/pull/15575/merge exists
Mobile native build filter
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: dorny/paths-filter@v3. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Copilot test filter
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: dorny/paths-filter@v3. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Rust test filter
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: dorny/paths-filter@v3. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Build @affine/electron renderer
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Analyze (typescript, blocksuite)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: github/codeql-action/analyze@v3, github/codeql-action/autobuild@v3, github/codeql-action/init@v3. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Analyze (typescript, blocksuite)
1 issue was detected with this workflow: CodeQL language 'javascript' is referenced by more than one entry in the 'language' matrix parameter for job 'analyze'. This may result in duplicate alerts. Please edit the 'language' matrix parameter to keep only one of the following: 'javascript', 'typescript'.
Analyze (typescript, blocksuite)
CodeQL Action v3 will be deprecated in December 2026. Please update all occurrences of the CodeQL Action in your workflow files to v4. For more information, see https://github.blog/changelog/2025-10-28-upcoming-deprecation-of-codeql-action-v3/
Analyze (javascript, affine)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: github/codeql-action/analyze@v3, github/codeql-action/autobuild@v3, github/codeql-action/init@v3. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Analyze (javascript, affine)
1 issue was detected with this workflow: CodeQL language 'javascript' is referenced by more than one entry in the 'language' matrix parameter for job 'analyze'. This may result in duplicate alerts. Please edit the 'language' matrix parameter to keep only one of the following: 'javascript', 'typescript'.
Analyze (javascript, affine)
CodeQL Action v3 will be deprecated in December 2026. Please update all occurrences of the CodeQL Action in your workflow files to v4. For more information, see https://github.blog/changelog/2025-10-28-upcoming-deprecation-of-codeql-action-v3/
Analyze (javascript, blocksuite)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: github/codeql-action/analyze@v3, github/codeql-action/autobuild@v3, github/codeql-action/init@v3. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Analyze (javascript, blocksuite)
1 issue was detected with this workflow: CodeQL language 'javascript' is referenced by more than one entry in the 'language' matrix parameter for job 'analyze'. This may result in duplicate alerts. Please edit the 'language' matrix parameter to keep only one of the following: 'javascript', 'typescript'.
Analyze (javascript, blocksuite)
CodeQL Action v3 will be deprecated in December 2026. Please update all occurrences of the CodeQL Action in your workflow files to v4. For more information, see https://github.blog/changelog/2025-10-28-upcoming-deprecation-of-codeql-action-v3/
Analyze (typescript, affine)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: github/codeql-action/analyze@v3, github/codeql-action/autobuild@v3, github/codeql-action/init@v3. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Analyze (typescript, affine)
1 issue was detected with this workflow: CodeQL language 'javascript' is referenced by more than one entry in the 'language' matrix parameter for job 'analyze'. This may result in duplicate alerts. Please edit the 'language' matrix parameter to keep only one of the following: 'javascript', 'typescript'.
Analyze (typescript, affine)
CodeQL Action v3 will be deprecated in December 2026. Please update all occurrences of the CodeQL Action in your workflow files to v4. For more information, see https://github.blog/changelog/2025-10-28-upcoming-deprecation-of-codeql-action-v3/
Lint
Restore cache failed: Dependencies file is not found in /home/runner/work/AFFiNE/AFFiNE. Supported file pattern: go.mod
E2E BlockSuite Cross Browser Test
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
E2E BlockSuite Test (1)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
E2E BlockSuite Test (4)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
E2E Mobile Test (2)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
E2E BlockSuite Test (5)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
E2E BlockSuite Test (3)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
E2E Mobile Test (1)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
E2E BlockSuite Test (2)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
E2E Test (5)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Build AFFiNE native (aarch64-pc-windows-msvc)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/upload-artifact@v4, samypr100/setup-dev-drive@v3. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
E2E Test (1)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
E2E Test (3)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Build Server native
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Build AFFiNE native (x86_64-pc-windows-msvc)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/upload-artifact@v4, samypr100/setup-dev-drive@v3. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Build AFFiNE native (x86_64-unknown-linux-gnu)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
E2E Test (2)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
E2E Test (4)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Build AFFiNE native (x86_64-apple-darwin)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Build AFFiNE native (aarch64-apple-darwin)
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
🎭 Playwright Run Summary
2 skipped 35 passed (33.5s)
🎭 Playwright Run Summary
4 flaky e2e/attachment.spec.ts:187:1 › should rename attachment works ────────────────────────────────── e2e/bookmark.spec.ts:343:1 › bookmark can be dragged from note to surface top level block ────── e2e/clipboard/list.spec.ts:136:1 › paste a nested list to a nested list ──────────────────────── e2e/clipboard/list.spec.ts:310:1 › paste non-nested lists to a nested list ───────────────────── 9 skipped 190 passed (3.1m)
🎭 Playwright Run Summary
2 flaky e2e/link.spec.ts:145:1 › type character in link should not jump out link node ────────────────── e2e/linked-page.spec.ts:586:3 › linked page with clipboard › paste linked page should paste as linked page 6 skipped 195 passed (3.1m)
🎭 Playwright Run Summary
1 flaky [Mobile Chrome] › e2e/explorer-tag.spec.ts:58:1 › create a tag from navigation panel ─────────── 21 passed (3.8m)
🎭 Playwright Run Summary
5 flaky e2e/list.spec.ts:497:1 › enter list block with non-empty text ────────────────────────────────── e2e/paragraph.spec.ts:559:1 › paragraph with child block should work at enter ────────────────── e2e/paragraph.spec.ts:656:1 › delete at start of paragraph immediately following list ────────── e2e/selection/block.spec.ts:156:1 › click the list icon can select and copy ──────────────────── e2e/selection/native.spec.ts:1408:1 › should select with shift-click ─────────────────────────── 3 skipped 194 passed (3.4m)
🎭 Playwright Run Summary
4 skipped 199 passed (5.0m)
🎭 Playwright Run Summary
2 flaky [Mobile Safari] › e2e/detail.spec.ts:32:1 › switch to edgeless mode ──────────────────────────── [Mobile Safari] › e2e/home.spec.ts:18:1 › stale first-open state still restores one local workspace 20 passed (5.2m)
🎭 Playwright Run Summary
1 flaky e2e/drag.spec.ts:509:1 › should get to selected block when dragging unselected block ─────────── 8 skipped 194 passed (4.9m)
🎭 Playwright Run Summary
2 skipped 64 passed (6.7m)

Artifacts

Produced during runtime
Name Size Digest
test-results-e2e-5
187 KB
sha256:7ce5bb0b8178f13ae37f9b8747fce9a88e33b1950e52b03d9ceb40ec1b7a82e4
test-results-e2e-bs-1
8.45 MB
sha256:7fadb5a6f0d842484f4dbffe44c802b26056656c3d2b612e6469b45116e83e5d
test-results-e2e-bs-2
1.37 MB
sha256:bbcc8f753cb6d296b1a2c358e88ee48ef31892476c2b6f51b041501daae53752
test-results-e2e-bs-4
2.51 MB
sha256:1075511e37d677e9a3582d548d1a469d6dd8ca67b2745063b38536cdb07e1aa9
test-results-e2e-bs-5
6.84 MB
sha256:e48e162b607faf992e21f42159b23cffcfb0a5144a4e5a417f1a6f85c0f74425
test-results-e2e-mobile-1
15.7 MB
sha256:7d78f3639f9f151cd5888464c32a614b7beaeff2ccecd17f7cf1f8ca37d3cad4
test-results-e2e-mobile-2
1.68 MB
sha256:df87b53354b3f713154d262d3a05f6c208deb1f34e963f6b2578e398f7896e7f
web
70.5 MB
sha256:883679a59b7c669ff3c11a75ebaf506f0d4dfd09ea64828db89d1b47cdbadfdf