Skip to content

Fix expressions memory leak #1702

Fix expressions memory leak

Fix expressions memory leak #1702

Triggered via pull request May 21, 2026 04:11
Status Failure
Total duration 42m 50s
Artifacts 7

build.yaml

on: pull_request
Matrix: lint_and_docs
Matrix: build_js
Matrix: build_python
Matrix: build_and_test_rust
Matrix: build_emscripten_wheel
Matrix: benchmark_js
Matrix: test_js
Matrix: build_and_test_jupyterlab
Matrix: benchmark_python
Matrix: test_python
Matrix: test_emscripten_wheel
Matrix: test_python_sdist
Matrix: publish
Fit to window
Zoom out
Zoom in

Annotations

10 errors, 13 warnings, and 2 notices
[viewer-desktop-chrome] › rust/perspective-viewer/test/js/dragdrop/cancel.spec.ts:145:9 › Drag and Drop › cancel › drag inactive column over Filter then cancel before drop: tools/test/src/js/utils.ts#L184
9) [viewer-desktop-chrome] › rust/perspective-viewer/test/js/dragdrop/cancel.spec.ts:145:9 › Drag and Drop › cancel › drag inactive column over Filter then cancel before drop Error: expect(string).toMatchSnapshot(expected) failed @@ -1,8 +1,11 @@ <div id="settings_close_button" class="sidebar_close_button"> <div class="sidebar_close_button_inner"><span class="icon"></span></div> </div> +<div id="debug_open_button" class="sidebar_close_button"> + <div class="sidebar_close_button_inner"><span class="icon"></span></div> +</div> <div id="plugin_selector_container"> <div data-plugin="test column settings" style=" --default-column-title: var( @@ -14,15 +17,10 @@ > <span class="icon"></span><span class="plugin-select-item-name"></span> </div> <div id="plugin_selector_border"></div> </div> -<div id="settings_tab_bar" class="settings_tab_bar_scroll_offset"> - <div id="query_tabbar_tab" class="settings_tab selected_tab"></div> - <div id="plugin_tabbar_tab" class="settings_tab"></div> - <div id="debug_tabbar_tab" class="settings_tab"></div> -</div> <div class="split-panel-child"> <div id="selected-columns"> <div id="active-columns" class="scrollable"> <div style="position: sticky; top: 0; transform: translateY(0px)" @@ -108,10 +106,11 @@ > <div class="pivot-column column-empty"> <input spellcheck="false" class="column-empty-input" /> </div> </div> + <div style="" class="scroll-panel-auto-width"></div> </div> <div style="" class="scroll-panel-content"></div> </div> </div> </div> @@ -343,10 +342,26 @@ ><span class="icon"></span ></span> </div> </div> </div> + <div data-index="13" class="column-selector-column"> + <span class="select-mode is_column_active"></span> + <div + draggable="true" + class="column-selector-draggable column-selector-column-title" + > + <div class="column-selector-column-border"> + <span class="drag-handle icon"></span + ><span class="integer type-icon"></span + ><span class="column_name">Postal Code</span + ><span class="column-selector--spacer"></span + ><span class="expression-edit-button disabled" + ><span class="icon"></span + ></span> + </div> + </div> + </div> <div style="" class="scroll-panel-auto-width"></div> </div> <div style="" class="scroll-panel-content"></div> </div> -<div style="" class="scroll-panel-auto-width"></div> Snapshot: drag-and-drop-cancel-drag-inactive-column-over-filter-then-cancel-before-drop.txt at src/js/utils.ts:184 182 | ]; 183 | > 184 | await expect(formatted).toMatchSnapshot(snapshotPath); | ^ 185 | } 186 | 187 | export async function compareSVGContentsToSnapshot( at compareContentsToSnapshot (/home/runner/work/perspective/perspective/tools/test/src/js/utils.ts:184:29) at /home/runner/work/perspective/perspective/rust/perspective-viewer/test/js/dragdrop/cancel.spec.ts:159:13
[viewer-desktop-chrome] › rust/perspective-viewer/test/js/dragdrop/cancel.spec.ts:128:9 › Drag and Drop › cancel › drag inactive column over Sort then cancel before drop: tools/test/src/js/utils.ts#L184
8) [viewer-desktop-chrome] › rust/perspective-viewer/test/js/dragdrop/cancel.spec.ts:128:9 › Drag and Drop › cancel › drag inactive column over Sort then cancel before drop Error: expect(string).toMatchSnapshot(expected) failed @@ -1,8 +1,11 @@ <div id="settings_close_button" class="sidebar_close_button"> <div class="sidebar_close_button_inner"><span class="icon"></span></div> </div> +<div id="debug_open_button" class="sidebar_close_button"> + <div class="sidebar_close_button_inner"><span class="icon"></span></div> +</div> <div id="plugin_selector_container"> <div data-plugin="test column settings" style=" --default-column-title: var( @@ -14,15 +17,10 @@ > <span class="icon"></span><span class="plugin-select-item-name"></span> </div> <div id="plugin_selector_border"></div> </div> -<div id="settings_tab_bar" class="settings_tab_bar_scroll_offset"> - <div id="query_tabbar_tab" class="settings_tab selected_tab"></div> - <div id="plugin_tabbar_tab" class="settings_tab"></div> - <div id="debug_tabbar_tab" class="settings_tab"></div> -</div> <div class="split-panel-child"> <div id="selected-columns"> <div id="active-columns" class="scrollable"> <div style="position: sticky; top: 0; transform: translateY(0px)" @@ -108,10 +106,11 @@ > <div class="pivot-column column-empty"> <input spellcheck="false" class="column-empty-input" /> </div> </div> + <div style="" class="scroll-panel-auto-width"></div> </div> <div style="" class="scroll-panel-content"></div> </div> </div> </div> @@ -343,10 +342,26 @@ ><span class="icon"></span ></span> </div> </div> </div> + <div data-index="13" class="column-selector-column"> + <span class="select-mode is_column_active"></span> + <div + draggable="true" + class="column-selector-draggable column-selector-column-title" + > + <div class="column-selector-column-border"> + <span class="drag-handle icon"></span + ><span class="integer type-icon"></span + ><span class="column_name">Postal Code</span + ><span class="column-selector--spacer"></span + ><span class="expression-edit-button disabled" + ><span class="icon"></span + ></span> + </div> + </div> + </div> <div style="" class="scroll-panel-auto-width"></div> </div> <div style="" class="scroll-panel-content"></div> </div> -<div style="" class="scroll-panel-auto-width"></div> Snapshot: drag-and-drop-cancel-drag-inactive-column-over-sort-then-cancel-before-drop.txt at src/js/utils.ts:184 182 | ]; 183 | > 184 | await expect(formatted).toMatchSnapshot(snapshotPath); | ^ 185 | } 186 | 187 | export async function compareSVGContentsToSnapshot( at compareContentsToSnapshot (/home/runner/work/perspective/perspective/tools/test/src/js/utils.ts:184:29) at /home/runner/work/perspective/perspective/rust/perspective-viewer/test/js/dragdrop/cancel.spec.ts:142:13
[viewer-desktop-chrome] › rust/perspective-viewer/test/js/dragdrop/cancel.spec.ts:111:9 › Drag and Drop › cancel › drag inactive column over Split By then cancel before drop: tools/test/src/js/utils.ts#L184
7) [viewer-desktop-chrome] › rust/perspective-viewer/test/js/dragdrop/cancel.spec.ts:111:9 › Drag and Drop › cancel › drag inactive column over Split By then cancel before drop Error: expect(string).toMatchSnapshot(expected) failed @@ -1,8 +1,11 @@ <div id="settings_close_button" class="sidebar_close_button"> <div class="sidebar_close_button_inner"><span class="icon"></span></div> </div> +<div id="debug_open_button" class="sidebar_close_button"> + <div class="sidebar_close_button_inner"><span class="icon"></span></div> +</div> <div id="plugin_selector_container"> <div data-plugin="test column settings" style=" --default-column-title: var( @@ -14,15 +17,10 @@ > <span class="icon"></span><span class="plugin-select-item-name"></span> </div> <div id="plugin_selector_border"></div> </div> -<div id="settings_tab_bar" class="settings_tab_bar_scroll_offset"> - <div id="query_tabbar_tab" class="settings_tab selected_tab"></div> - <div id="plugin_tabbar_tab" class="settings_tab"></div> - <div id="debug_tabbar_tab" class="settings_tab"></div> -</div> <div class="split-panel-child"> <div id="selected-columns"> <div id="active-columns" class="scrollable"> <div style="position: sticky; top: 0; transform: translateY(0px)" @@ -108,10 +106,11 @@ > <div class="pivot-column column-empty"> <input spellcheck="false" class="column-empty-input" /> </div> </div> + <div style="" class="scroll-panel-auto-width"></div> </div> <div style="" class="scroll-panel-content"></div> </div> </div> </div> @@ -343,10 +342,26 @@ ><span class="icon"></span ></span> </div> </div> </div> + <div data-index="13" class="column-selector-column"> + <span class="select-mode is_column_active"></span> + <div + draggable="true" + class="column-selector-draggable column-selector-column-title" + > + <div class="column-selector-column-border"> + <span class="drag-handle icon"></span + ><span class="integer type-icon"></span + ><span class="column_name">Postal Code</span + ><span class="column-selector--spacer"></span + ><span class="expression-edit-button disabled" + ><span class="icon"></span + ></span> + </div> + </div> + </div> <div style="" class="scroll-panel-auto-width"></div> </div> <div style="" class="scroll-panel-content"></div> </div> -<div style="" class="scroll-panel-auto-width"></div> Snapshot: drag-and-drop-cancel-drag-inactive-column-over-split-by-then-cancel-before-drop.txt at src/js/utils.ts:184 182 | ]; 183 | > 184 | await expect(formatted).toMatchSnapshot(snapshotPath); | ^ 185 | } 186 | 187 | export async function compareSVGContentsToSnapshot( at compareContentsToSnapshot (/home/runner/work/perspective/perspective/tools/test/src/js/utils.ts:184:29) at /home/runner/work/perspective/perspective/rust/perspective-viewer/test/js/dragdrop/cancel.spec.ts:125:13
[viewer-desktop-chrome] › rust/perspective-viewer/test/js/dragdrop/cancel.spec.ts:93:9 › Drag and Drop › cancel › drag inactive column over Group By then cancel before drop: tools/test/src/js/utils.ts#L184
6) [viewer-desktop-chrome] › rust/perspective-viewer/test/js/dragdrop/cancel.spec.ts:93:9 › Drag and Drop › cancel › drag inactive column over Group By then cancel before drop Error: expect(string).toMatchSnapshot(expected) failed @@ -1,8 +1,11 @@ <div id="settings_close_button" class="sidebar_close_button"> <div class="sidebar_close_button_inner"><span class="icon"></span></div> </div> +<div id="debug_open_button" class="sidebar_close_button"> + <div class="sidebar_close_button_inner"><span class="icon"></span></div> +</div> <div id="plugin_selector_container"> <div data-plugin="test column settings" style=" --default-column-title: var( @@ -14,15 +17,10 @@ > <span class="icon"></span><span class="plugin-select-item-name"></span> </div> <div id="plugin_selector_border"></div> </div> -<div id="settings_tab_bar" class="settings_tab_bar_scroll_offset"> - <div id="query_tabbar_tab" class="settings_tab selected_tab"></div> - <div id="plugin_tabbar_tab" class="settings_tab"></div> - <div id="debug_tabbar_tab" class="settings_tab"></div> -</div> <div class="split-panel-child"> <div id="selected-columns"> <div id="active-columns" class="scrollable"> <div style="position: sticky; top: 0; transform: translateY(0px)" @@ -108,10 +106,11 @@ > <div class="pivot-column column-empty"> <input spellcheck="false" class="column-empty-input" /> </div> </div> + <div style="" class="scroll-panel-auto-width"></div> </div> <div style="" class="scroll-panel-content"></div> </div> </div> </div> @@ -343,10 +342,26 @@ ><span class="icon"></span ></span> </div> </div> </div> + <div data-index="13" class="column-selector-column"> + <span class="select-mode is_column_active"></span> + <div + draggable="true" + class="column-selector-draggable column-selector-column-title" + > + <div class="column-selector-column-border"> + <span class="drag-handle icon"></span + ><span class="integer type-icon"></span + ><span class="column_name">Postal Code</span + ><span class="column-selector--spacer"></span + ><span class="expression-edit-button disabled" + ><span class="icon"></span + ></span> + </div> + </div> + </div> <div style="" class="scroll-panel-auto-width"></div> </div> <div style="" class="scroll-panel-content"></div> </div> -<div style="" class="scroll-panel-auto-width"></div> Snapshot: drag-and-drop-cancel-drag-inactive-column-over-group-by-then-cancel-before-drop.txt at src/js/utils.ts:184 182 | ]; 183 | > 184 | await expect(formatted).toMatchSnapshot(snapshotPath); | ^ 185 | } 186 | 187 | export async function compareSVGContentsToSnapshot( at compareContentsToSnapshot (/home/runner/work/perspective/perspective/tools/test/src/js/utils.ts:184:29) at /home/runner/work/perspective/perspective/rust/perspective-viewer/test/js/dragdrop/cancel.spec.ts:108:13
[viewer-desktop-chrome] › rust/perspective-viewer/test/js/dragdrop/cancel.spec.ts:74:9 › Drag and Drop › cancel › drag inactive column over wrong target (status bar) then cancel: tools/test/src/js/utils.ts#L184
5) [viewer-desktop-chrome] › rust/perspective-viewer/test/js/dragdrop/cancel.spec.ts:74:9 › Drag and Drop › cancel › drag inactive column over wrong target (status bar) then cancel Error: expect(string).toMatchSnapshot(expected) failed @@ -1,8 +1,11 @@ <div id="settings_close_button" class="sidebar_close_button"> <div class="sidebar_close_button_inner"><span class="icon"></span></div> </div> +<div id="debug_open_button" class="sidebar_close_button"> + <div class="sidebar_close_button_inner"><span class="icon"></span></div> +</div> <div id="plugin_selector_container"> <div data-plugin="test column settings" style=" --default-column-title: var( @@ -14,15 +17,10 @@ > <span class="icon"></span><span class="plugin-select-item-name"></span> </div> <div id="plugin_selector_border"></div> </div> -<div id="settings_tab_bar" class="settings_tab_bar_scroll_offset"> - <div id="query_tabbar_tab" class="settings_tab selected_tab"></div> - <div id="plugin_tabbar_tab" class="settings_tab"></div> - <div id="debug_tabbar_tab" class="settings_tab"></div> -</div> <div class="split-panel-child"> <div id="selected-columns"> <div id="active-columns" class="scrollable"> <div style="position: sticky; top: 0; transform: translateY(0px)" @@ -108,10 +106,11 @@ > <div class="pivot-column column-empty"> <input spellcheck="false" class="column-empty-input" /> </div> </div> + <div style="" class="scroll-panel-auto-width"></div> </div> <div style="" class="scroll-panel-content"></div> </div> </div> </div> @@ -343,10 +342,26 @@ ><span class="icon"></span ></span> </div> </div> </div> + <div data-index="13" class="column-selector-column"> + <span class="select-mode is_column_active"></span> + <div + draggable="true" + class="column-selector-draggable column-selector-column-title" + > + <div class="column-selector-column-border"> + <span class="drag-handle icon"></span + ><span class="integer type-icon"></span + ><span class="column_name">Postal Code</span + ><span class="column-selector--spacer"></span + ><span class="expression-edit-button disabled" + ><span class="icon"></span + ></span> + </div> + </div> + </div> <div style="" class="scroll-panel-auto-width"></div> </div> <div style="" class="scroll-panel-content"></div> </div> -<div style="" class="scroll-panel-auto-width"></div> Snapshot: drag-and-drop-cancel-drag-inactive-column-over-wrong-target-status-bar-then-cancel.txt at src/js/utils.ts:184 182 | ]; 183 | > 184 | await expect(formatted).toMatchSnapshot(snapshotPath); | ^ 185 | } 186 | 187 | export async function compareSVGContentsToSnapshot( at compareContentsToSnapshot (/home/runner/work/perspective/perspective/tools/test/src/js/utils.ts:184:29) at /home/runner/work/perspective/perspective/rust/perspective-viewer/test/js/dragdrop/cancel.spec.ts:90:13
[viewer-desktop-chrome] › rust/perspective-viewer/test/js/dragdrop/cancel.spec.ts:54:9 › Drag and Drop › cancel › drag active column and cancel (dragend with no drop): tools/test/src/js/utils.ts#L184
4) [viewer-desktop-chrome] › rust/perspective-viewer/test/js/dragdrop/cancel.spec.ts:54:9 › Drag and Drop › cancel › drag active column and cancel (dragend with no drop) Error: expect(string).toMatchSnapshot(expected) failed @@ -1,8 +1,11 @@ <div id="settings_close_button" class="sidebar_close_button"> <div class="sidebar_close_button_inner"><span class="icon"></span></div> </div> +<div id="debug_open_button" class="sidebar_close_button"> + <div class="sidebar_close_button_inner"><span class="icon"></span></div> +</div> <div id="plugin_selector_container"> <div data-plugin="test column settings" style=" --default-column-title: var( @@ -14,15 +17,10 @@ > <span class="icon"></span><span class="plugin-select-item-name"></span> </div> <div id="plugin_selector_border"></div> </div> -<div id="settings_tab_bar" class="settings_tab_bar_scroll_offset"> - <div id="query_tabbar_tab" class="settings_tab selected_tab"></div> - <div id="plugin_tabbar_tab" class="settings_tab"></div> - <div id="debug_tabbar_tab" class="settings_tab"></div> -</div> <div class="split-panel-child"> <div id="selected-columns"> <div id="active-columns" class="scrollable" data-safaridragleave="true"> <div style="position: sticky; top: 0; transform: translateY(0px)" @@ -128,10 +126,11 @@ > <div class="pivot-column column-empty"> <input spellcheck="false" class="column-empty-input" /> </div> </div> + <div style="" class="scroll-panel-auto-width"></div> </div> <div style="" class="scroll-panel-content"></div> </div> </div> </div> @@ -346,10 +345,26 @@ ><span class="icon"></span ></span> </div> </div> </div> + <div data-index="12" class="column-selector-column"> + <span class="select-mode is_column_active"></span> + <div + draggable="true" + class="column-selector-draggable column-selector-column-title" + > + <div class="column-selector-column-border"> + <span class="drag-handle icon"></span + ><span class="datetime type-icon"></span + ><span class="column_name">Ship Date</span + ><span class="column-selector--spacer"></span + ><span class="expression-edit-button disabled" + ><span class="icon"></span + ></span> + </div> + </div> + </div> <div style="" class="scroll-panel-auto-width"></div> </div> <div style="" class="scroll-panel-content"></div> </div> -<div style="" class="scroll-panel-auto-width"></div> Snapshot: drag-and-drop-cancel-drag-active-column-and-cancel-dragend-with-no-drop-.txt at src/js/utils.ts:184 182 | ]; 183 | > 184 | await expect(formatted).toMatchSnapshot(snapshotPath); | ^ 185 | } 186 | 187 | export async function compareSVGContentsToSnapshot( at compareContentsToSnapshot (/home/runner/work/perspective/perspective/tools/test/src/js/utils.ts:184:29) at /home/runner/work/perspective/perspective/rust/perspective-viewer/test/js/dragdrop/cancel.spec.ts:71:13
[viewer-desktop-chrome] › rust/perspective-viewer/test/js/dragdrop/cancel.spec.ts:38:9 › Drag and Drop › cancel › drag inactive column and cancel (dragend with no drop): tools/test/src/js/utils.ts#L184
3) [viewer-desktop-chrome] › rust/perspective-viewer/test/js/dragdrop/cancel.spec.ts:38:9 › Drag and Drop › cancel › drag inactive column and cancel (dragend with no drop) Error: expect(string).toMatchSnapshot(expected) failed @@ -1,8 +1,11 @@ <div id="settings_close_button" class="sidebar_close_button"> <div class="sidebar_close_button_inner"><span class="icon"></span></div> </div> +<div id="debug_open_button" class="sidebar_close_button"> + <div class="sidebar_close_button_inner"><span class="icon"></span></div> +</div> <div id="plugin_selector_container"> <div data-plugin="test column settings" style=" --default-column-title: var( @@ -14,15 +17,10 @@ > <span class="icon"></span><span class="plugin-select-item-name"></span> </div> <div id="plugin_selector_border"></div> </div> -<div id="settings_tab_bar" class="settings_tab_bar_scroll_offset"> - <div id="query_tabbar_tab" class="settings_tab selected_tab"></div> - <div id="plugin_tabbar_tab" class="settings_tab"></div> - <div id="debug_tabbar_tab" class="settings_tab"></div> -</div> <div class="split-panel-child"> <div id="selected-columns"> <div id="active-columns" class="scrollable"> <div style="position: sticky; top: 0; transform: translateY(0px)" @@ -108,10 +106,11 @@ > <div class="pivot-column column-empty"> <input spellcheck="false" class="column-empty-input" /> </div> </div> + <div style="" class="scroll-panel-auto-width"></div> </div> <div style="" class="scroll-panel-content"></div> </div> </div> </div> @@ -343,10 +342,26 @@ ><span class="icon"></span ></span> </div> </div> </div> + <div data-index="13" class="column-selector-column"> + <span class="select-mode is_column_active"></span> + <div + draggable="true" + class="column-selector-draggable column-selector-column-title" + > + <div class="column-selector-column-border"> + <span class="drag-handle icon"></span + ><span class="integer type-icon"></span + ><span class="column_name">Postal Code</span + ><span class="column-selector--spacer"></span + ><span class="expression-edit-button disabled" + ><span class="icon"></span + ></span> + </div> + </div> + </div> <div style="" class="scroll-panel-auto-width"></div> </div> <div style="" class="scroll-panel-content"></div> </div> -<div style="" class="scroll-panel-auto-width"></div> Snapshot: drag-and-drop-cancel-drag-inactive-column-and-cancel-dragend-with-no-drop-.txt at src/js/utils.ts:184 182 | ]; 183 | > 184 | await expect(formatted).toMatchSnapshot(snapshotPath); | ^ 185 | } 186 | 187 | export async function compareSVGContentsToSnapshot( at compareContentsToSnapshot (/home/runner/work/perspective/perspective/tools/test/src/js/utils.ts:184:29) at /home/runner/work/perspective/perspective/rust/perspective-viewer/test/js/dragdrop/cancel.spec.ts:51:13
[client-node] › rust/perspective-js/test/js/ports.spec.js:32:5 › ports › deltas › Deltas should be unique to each port: rust/perspective-js/src/ts/wasm/engine.ts#L255
2) [client-node] › rust/perspective-js/test/js/ports.spec.js:32:5 › ports › deltas › Deltas should be unique to each port Error: Unknown error: JsValue(TypeError: Cannot perform DataView.prototype.getInt32 on a detached ArrayBuffer TypeError: Cannot perform DataView.prototype.getInt32 on a detached ArrayBuffer at ../../rust/perspective-js/src/ts/wasm/engine.ts:255 253 | const data_ptr = is_64 254 | ? messages.getBigInt64(i * 16, true) > 255 | : messages.getInt32(i * 12, true); | ^ 256 | 257 | core._psp_free(data_ptr as any); 258 | } at DataView.prototype.getInt32 (<anonymous>) at decode_api_responses (file:///home/runner/work/perspective/perspective/rust/perspective-js/src/ts/wasm/engine.ts:255:28) at PerspectiveSession.handle_request (file:///home/runner/work/perspective/perspective/rust/perspective-js/src/ts/wasm/engine.ts:133:9) at file:///home/runner/work/perspective/perspective/rust/perspective-js/src/ts/perspective.node.ts:82:5) at decode_api_responses (/home/runner/work/perspective/perspective/rust/perspective-js/src/ts/wasm/engine.ts:255:28) at PerspectiveSession.handle_request (/home/runner/work/perspective/perspective/rust/perspective-js/src/ts/wasm/engine.ts:133:9) at /home/runner/work/perspective/perspective/rust/perspective-js/src/ts/perspective.node.ts:82:5 at __wbg_new_72b49615380db768 (/home/runner/work/perspective/perspective/rust/perspective-js/dist/wasm/perspective-js.js:1963:25) at null.<anonymous> (wasm://wasm/005bbc86:1:1168051) at null.<anonymous> (wasm://wasm/005bbc86:1:916260) at null.<anonymous> (wasm://wasm/005bbc86:1:354727) at null.<anonymous> (wasm://wasm/005bbc86:1:684547) at __wasm_bindgen_func_elem_4031 (wasm://wasm/005bbc86:1:1219917) at f (/home/runner/work/perspective/perspective/rust/perspective-js/dist/wasm/perspective-js.js:2220:10) at real (/home/runner/work/perspective/perspective/rust/perspective-js/dist/wasm/perspective-js.js:2496:20)
[client-node] › rust/perspective-js/test/js/ports.spec.js:32:5 › ports › deltas › Deltas should be unique to each port: rust/perspective-js/src/ts/wasm/engine.ts#L255
2) [client-node] › rust/perspective-js/test/js/ports.spec.js:32:5 › ports › deltas › Deltas should be unique to each port Error: Unknown error: JsValue(TypeError: Cannot perform DataView.prototype.getInt32 on a detached ArrayBuffer TypeError: Cannot perform DataView.prototype.getInt32 on a detached ArrayBuffer at ../../rust/perspective-js/src/ts/wasm/engine.ts:255 253 | const data_ptr = is_64 254 | ? messages.getBigInt64(i * 16, true) > 255 | : messages.getInt32(i * 12, true); | ^ 256 | 257 | core._psp_free(data_ptr as any); 258 | } at DataView.prototype.getInt32 (<anonymous>) at decode_api_responses (file:///home/runner/work/perspective/perspective/rust/perspective-js/src/ts/wasm/engine.ts:255:28) at PerspectiveSession.poll (file:///home/runner/work/perspective/perspective/rust/perspective-js/src/ts/wasm/engine.ts:146:9) at PerspectiveSession.handle_request (file:///home/runner/work/perspective/perspective/rust/perspective-js/src/ts/wasm/engine.ts:140:13) at file:///home/runner/work/perspective/perspective/rust/perspective-js/src/ts/perspective.node.ts:82:5) at decode_api_responses (/home/runner/work/perspective/perspective/rust/perspective-js/src/ts/wasm/engine.ts:255:28) at PerspectiveSession.poll (/home/runner/work/perspective/perspective/rust/perspective-js/src/ts/wasm/engine.ts:146:9) at PerspectiveSession.handle_request (/home/runner/work/perspective/perspective/rust/perspective-js/src/ts/wasm/engine.ts:140:13) at /home/runner/work/perspective/perspective/rust/perspective-js/src/ts/perspective.node.ts:82:5 at __wbg_new_72b49615380db768 (/home/runner/work/perspective/perspective/rust/perspective-js/dist/wasm/perspective-js.js:1963:25) at null.<anonymous> (wasm://wasm/005bbc86:1:1168051) at null.<anonymous> (wasm://wasm/005bbc86:1:916260) at null.<anonymous> (wasm://wasm/005bbc86:1:558625) at null.<anonymous> (wasm://wasm/005bbc86:1:567031) at null.<anonymous> (wasm://wasm/005bbc86:1:684547) at __wasm_bindgen_func_elem_4031 (wasm://wasm/005bbc86:1:1219917) at f (/home/runner/work/perspective/perspective/rust/perspective-js/dist/wasm/perspective-js.js:2220:10) at real (/home/runner/work/perspective/perspective/rust/perspective-js/dist/wasm/perspective-js.js:2496:20)
[client-node] › rust/perspective-js/test/js/expressions/deltas.spec.js:26:5 › Expression column update deltas › 0-sided expression column deltas with multiple views › `on_update` on different views with different expression columns should only be notified of their columns: rust/perspective-js/src/ts/wasm/engine.ts#L255
1) [client-node] › rust/perspective-js/test/js/expressions/deltas.spec.js:26:5 › Expression column update deltas › 0-sided expression column deltas with multiple views › `on_update` on different views with different expression columns should only be notified of their columns Error: Unknown error: JsValue(TypeError: Cannot perform DataView.prototype.getInt32 on a detached ArrayBuffer TypeError: Cannot perform DataView.prototype.getInt32 on a detached ArrayBuffer at ../../rust/perspective-js/src/ts/wasm/engine.ts:255 253 | const data_ptr = is_64 254 | ? messages.getBigInt64(i * 16, true) > 255 | : messages.getInt32(i * 12, true); | ^ 256 | 257 | core._psp_free(data_ptr as any); 258 | } at DataView.prototype.getInt32 (<anonymous>) at decode_api_responses (file:///home/runner/work/perspective/perspective/rust/perspective-js/src/ts/wasm/engine.ts:255:28) at PerspectiveSession.handle_request (file:///home/runner/work/perspective/perspective/rust/perspective-js/src/ts/wasm/engine.ts:133:9) at file:///home/runner/work/perspective/perspective/rust/perspective-js/src/ts/perspective.node.ts:82:5) at decode_api_responses (/home/runner/work/perspective/perspective/rust/perspective-js/src/ts/wasm/engine.ts:255:28) at PerspectiveSession.handle_request (/home/runner/work/perspective/perspective/rust/perspective-js/src/ts/wasm/engine.ts:133:9) at /home/runner/work/perspective/perspective/rust/perspective-js/src/ts/perspective.node.ts:82:5 at __wbg_new_72b49615380db768 (/home/runner/work/perspective/perspective/rust/perspective-js/dist/wasm/perspective-js.js:1963:25) at null.<anonymous> (wasm://wasm/005bbc86:1:1168051) at null.<anonymous> (wasm://wasm/005bbc86:1:916260) at null.<anonymous> (wasm://wasm/005bbc86:1:246244) at null.<anonymous> (wasm://wasm/005bbc86:1:684547) at __wasm_bindgen_func_elem_4031 (wasm://wasm/005bbc86:1:1219917) at f (/home/runner/work/perspective/perspective/rust/perspective-js/dist/wasm/perspective-js.js:2220:10) at real (/home/runner/work/perspective/perspective/rust/perspective-js/dist/wasm/perspective-js.js:2496:20)
lint_and_docs (ubuntu-22.04, 3.11, 22.x)
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/cache@v4, actions/checkout@v4, actions/setup-node@v4, actions/setup-python@v5, actions/upload-artifact@v4, pnpm/action-setup@v3. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
build_python (ubuntu-22.04-arm, aarch64, 3.11, 22.x)
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/cache@v4, actions/checkout@v4, actions/download-artifact@v4, actions/setup-node@v4, actions/upload-artifact@v4, pnpm/action-setup@v3. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
build_and_test_rust (ubuntu-22.04, x86_64, 22.x)
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/cache@v4, actions/checkout@v4, actions/download-artifact@v4, actions/setup-node@v4, actions/setup-python@v5, actions/upload-artifact@v4, pnpm/action-setup@v3. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
build_and_test_rust (ubuntu-22.04, x86_64, 22.x)
Cache paths are empty. Please check the previous logs and make sure that the python version is specified
build_and_test_rust (ubuntu-22.04, x86_64, 22.x)
The `python-version` input is not set. The version of Python currently in `PATH` will be used.
build_python (ubuntu-22.04, x86_64, 3.11, 22.x)
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/cache@v4, actions/checkout@v4, actions/download-artifact@v4, actions/setup-node@v4, actions/upload-artifact@v4, pnpm/action-setup@v3. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
build_emscripten_wheel (ubuntu-22.04, x86_64, 3.11, 22.x)
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/cache@v4, actions/checkout@v4, actions/download-artifact@v4, actions/setup-node@v4, actions/setup-python@v5, actions/upload-artifact@v4, pnpm/action-setup@v3. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
test_python (ubuntu-22.04, x86_64, 3.11, 22.x)
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/cache@v4, actions/checkout@v4, actions/download-artifact@v4, actions/setup-node@v4, actions/setup-python@v5, pnpm/action-setup@v3. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
test_python (ubuntu-22.04-arm, aarch64, 3.11, 22.x)
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/cache@v4, actions/checkout@v4, actions/download-artifact@v4, actions/setup-node@v4, actions/setup-python@v5, pnpm/action-setup@v3. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
test_emscripten_wheel (ubuntu-22.04, x86_64, 3.11, 22.x)
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/cache@v4, actions/checkout@v4, actions/download-artifact@v4, actions/setup-node@v4, actions/setup-python@v5, pnpm/action-setup@v3. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
build_js (ubuntu-22.04, 3.11, 22.x)
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/cache@v4, actions/checkout@v4, actions/download-artifact@v4, actions/setup-node@v4, actions/upload-artifact@v4, pnpm/action-setup@v3. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
build_and_test_jupyterlab (ubuntu-22.04, x86_64, 3.11, 22.x)
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/cache@v4, actions/checkout@v4, actions/download-artifact@v4, actions/setup-node@v4, actions/setup-python@v5, actions/upload-artifact@v4, pnpm/action-setup@v3. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
test_js (ubuntu-22.04, 3.11, 22.x)
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/cache@v4, actions/checkout@v4, actions/download-artifact@v4, actions/setup-node@v4, pnpm/action-setup@v3. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
🎭 Playwright Run Summary
3 passed (12.7s)
🎭 Playwright Run Summary
72 failed [client-node] › rust/perspective-js/test/js/expressions/deltas.spec.js:26:5 › Expression column update deltas › 0-sided expression column deltas with multiple views › `on_update` on different views with different expression columns should only be notified of their columns [client-node] › rust/perspective-js/test/js/ports.spec.js:32:5 › ports › deltas › Deltas should be unique to each port [viewer-desktop-chrome] › rust/perspective-viewer/test/js/dragdrop/cancel.spec.ts:38:9 › Drag and Drop › cancel › drag inactive column and cancel (dragend with no drop) [viewer-desktop-chrome] › rust/perspective-viewer/test/js/dragdrop/cancel.spec.ts:54:9 › Drag and Drop › cancel › drag active column and cancel (dragend with no drop) [viewer-desktop-chrome] › rust/perspective-viewer/test/js/dragdrop/cancel.spec.ts:74:9 › Drag and Drop › cancel › drag inactive column over wrong target (status bar) then cancel [viewer-desktop-chrome] › rust/perspective-viewer/test/js/dragdrop/cancel.spec.ts:93:9 › Drag and Drop › cancel › drag inactive column over Group By then cancel before drop [viewer-desktop-chrome] › rust/perspective-viewer/test/js/dragdrop/cancel.spec.ts:111:9 › Drag and Drop › cancel › drag inactive column over Split By then cancel before drop [viewer-desktop-chrome] › rust/perspective-viewer/test/js/dragdrop/cancel.spec.ts:128:9 › Drag and Drop › cancel › drag inactive column over Sort then cancel before drop [viewer-desktop-chrome] › rust/perspective-viewer/test/js/dragdrop/cancel.spec.ts:145:9 › Drag and Drop › cancel › drag inactive column over Filter then cancel before drop [viewer-desktop-chrome] › rust/perspective-viewer/test/js/dragdrop/cancel.spec.ts:162:9 › Drag and Drop › cancel › drag inactive column outside component (simulate drop outside browser) [viewer-desktop-chrome] › rust/perspective-viewer/test/js/dragdrop/cancel.spec.ts:180:9 › Drag and Drop › cancel › drag active column outside component (simulate drop outside browser) [viewer-desktop-chrome] › rust/perspective-viewer/test/js/dragdrop/dragover.spec.ts:39:9 › Drag and Drop › dragover (without drop) › inactive column dragged over Active Columns [viewer-desktop-chrome] › rust/perspective-viewer/test/js/dragdrop/dragover.spec.ts:60:9 › Drag and Drop › dragover (without drop) › inactive column dragged over Group By [viewer-desktop-chrome] › rust/perspective-viewer/test/js/dragdrop/dragover.spec.ts:74:9 › Drag and Drop › dragover (without drop) › inactive column dragged over Split By [viewer-desktop-chrome] › rust/perspective-viewer/test/js/dragdrop/dragover.spec.ts:88:9 › Drag and Drop › dragover (without drop) › inactive column dragged over Sort [viewer-desktop-chrome] › rust/perspective-viewer/test/js/dragdrop/dragover.spec.ts:102:9 › Drag and Drop › dragover (without drop) › inactive column dragged over Filter [viewer-desktop-chrome] › rust/perspective-viewer/test/js/dragdrop/dragover.spec.ts:116:9 › Drag and Drop › dragover (without drop) › active column dragged over Group By [viewer-desktop-chrome] › rust/perspective-viewer/test/js/dragdrop/dragover.spec.ts:134:9 › Drag and Drop › dragover (without drop) › active column dragged over Split By [viewer-desktop-chrome] › rust/perspective-viewer/test/js/dragdrop/dragover.spec.ts:152:9 › Drag and Drop › dragover (without drop) › active column dragged over Sort [viewer-desktop-chrome] › rust/perspective-viewer/test/js/dragdrop/dragover.spec.ts:170:9 › Drag and Drop › dragover (without drop) › active column dragged over Filter [viewer-desktop-chrome] › rust/perspective-viewer/test/js/dragdrop/drop_column_settings.spec.ts:36:9 › Drag and Drop › drop with Column Settings Sidebar open › inactive to active while sidebar is open on the active column [viewer-desktop-chrome] › rust/perspective-viewer/test/js/dragdrop/drop_column_settings.

Artifacts

Produced during runtime
Name Size Digest
perspective-js-dist
11.5 MB
sha256:e99495f9461c3aad7a81046c847edf9f9daa0ebd6860ae6c325c6a8bcdc83faa
perspective-metadata
639 KB
sha256:22fbc2a5d2ad5a946d1c5854084b9f8cc38b0144c668dd4b4faf9d647fa9c103
perspective-python-dist-aarch64-ubuntu-22.04-arm-3.11
5.83 MB
sha256:8c4af49d77108283ea31a119a85cbf97aef82236f2ae3e6b47ff85c5670accf1
perspective-python-dist-wasm32-emscripten-3.11
3.1 MB
sha256:ebac666b02e8ad2cbd046170d6136d28f14f74591f26ef1b5f1c8696230a2d29
perspective-python-dist-x86_64-ubuntu-22.04-3.11
9.47 MB
sha256:117c1fa604b3c629a33e4cf168f6ce28d95e5ccf5700ff61a27641b375fa735d
perspective-python-sdist
3.67 MB
sha256:7892e6302fe9a7e5ccf7396c26aeae34522fd09cda3d55bb119869c7fcc469d9
perspective-rust
1.02 MB
sha256:8db406255a26da4d30969342ed7fbd2ef5edb691c994238a9378aaa300d80f30