Skip to content

Build Status

Build Status #1699

Manually triggered May 20, 2026 16:19
Status Failure
Total duration 1h 9m 19s
Artifacts 12

build.yaml

on: workflow_dispatch
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

14 errors, 25 warnings, and 6 notices
test_python (ubuntu-22.04, x86_64, 3.11, 22.x, false)
Process completed with exit code 1.
test_python (ubuntu-22.04-arm, aarch64, 3.11, 22.x, false)
Process completed with exit code 1.
[client-node] › rust/perspective-js/test/js/duckdb/group_by.spec.js:115:5 › DuckDB Virtual Server group_by › group_by with count aggregate: rust/perspective-js/test/js/duckdb/group_by.spec.js#L123
10) [client-node] › rust/perspective-js/test/js/duckdb/group_by.spec.js:115:5 › DuckDB Virtual Server group_by › group_by with count aggregate Error: expect(received).toEqual(expected) // deep equality - Expected - 0 + Received + 5 Array [ Object { "Sales": 9994, + "__ROW_PATH_0__": null, "__ROW_PATH__": Array [], }, Object { "Sales": 2323, + "__ROW_PATH_0__": "Central", "__ROW_PATH__": Array [ "Central", ], }, Object { "Sales": 2848, + "__ROW_PATH_0__": "East", "__ROW_PATH__": Array [ "East", ], }, Object { "Sales": 1620, + "__ROW_PATH_0__": "South", "__ROW_PATH__": Array [ "South", ], }, Object { "Sales": 3203, + "__ROW_PATH_0__": "West", "__ROW_PATH__": Array [ "West", ], }, ] 121 | }); 122 | const json = await view.to_json(); > 123 | expect(json).toEqual([ | ^ 124 | { __ROW_PATH__: [], Sales: 9994 }, 125 | { __ROW_PATH__: ["Central"], Sales: 2323 }, 126 | { __ROW_PATH__: ["East"], Sales: 2848 }, at /home/runner/work/perspective/perspective/rust/perspective-js/test/js/duckdb/group_by.spec.js:123:22
[client-node] › rust/perspective-js/test/js/duckdb/group_by.spec.js:43:5 › DuckDB Virtual Server group_by › multi-level group_by: rust/perspective-js/test/js/duckdb/group_by.spec.js#L51
9) [client-node] › rust/perspective-js/test/js/duckdb/group_by.spec.js:43:5 › DuckDB Virtual Server group_by › multi-level group_by Error: expect(received).toEqual(expected) // deep equality - Expected - 0 + Received + 34 @@ -1,113 +1,147 @@ Array [ Object { "Sales": 2297200.860299955, + "__ROW_PATH_0__": null, + "__ROW_PATH_1__": null, "__ROW_PATH__": Array [], }, Object { "Sales": 501239.8908000005, + "__ROW_PATH_0__": "Central", + "__ROW_PATH_1__": null, "__ROW_PATH__": Array [ "Central", ], }, Object { "Sales": 163797.16380000004, + "__ROW_PATH_0__": "Central", + "__ROW_PATH_1__": "Furniture", "__ROW_PATH__": Array [ "Central", "Furniture", ], }, Object { "Sales": 167026.41500000027, + "__ROW_PATH_0__": "Central", + "__ROW_PATH_1__": "Office Supplies", "__ROW_PATH__": Array [ "Central", "Office Supplies", ], }, Object { "Sales": 170416.3119999999, + "__ROW_PATH_0__": "Central", + "__ROW_PATH_1__": "Technology", "__ROW_PATH__": Array [ "Central", "Technology", ], }, Object { "Sales": 678781.2399999979, + "__ROW_PATH_0__": "East", + "__ROW_PATH_1__": null, "__ROW_PATH__": Array [ "East", ], }, Object { "Sales": 208291.20400000009, + "__ROW_PATH_0__": "East", + "__ROW_PATH_1__": "Furniture", "__ROW_PATH__": Array [ "East", "Furniture", ], }, Object { "Sales": 205516.0549999999, + "__ROW_PATH_0__": "East", + "__ROW_PATH_1__": "Office Supplies", "__ROW_PATH__": Array [ "East", "Office Supplies", ], }, Object { "Sales": 264973.9810000003, + "__ROW_PATH_0__": "East", + "__ROW_PATH_1__": "Technology", "__ROW_PATH__": Array [ "East", "Technology", ], }, Object { "Sales": 391721.9050000003, + "__ROW_PATH_0__": "South", + "__ROW_PATH_1__": null, "__ROW_PATH__": Array [ "South", ], }, Object { "Sales": 117298.6840000001, + "__ROW_PATH_0__": "South", + "__ROW_PATH_1__": "Furniture", "__ROW_PATH__": Array [ "South", "Furniture", ], }, Object { "Sales": 125651.31299999992, + "__ROW_PATH_0__": "South", + "__ROW_PATH_1__": "Office Supplies", "__ROW_PATH__": Array [ "South", "Office Supplies", ], }, Object { "Sales": 148771.9079999999, + "__ROW_PATH_0__": "South", + "__ROW_PATH_1__": "Technology", "__ROW_PATH__": Array [ "South", "Technology", ], }, Object { "Sales": 725457.8245000006, + "__ROW_PATH_0__": "West", + "__ROW_PATH_1__": null, "__ROW_PATH__": Array [ "West", ], }, Object { "Sales": 252612.7435000003, + "__ROW_PATH_0__": "West", + "__ROW_PATH_1__": "Furniture", "__ROW_PATH__": Array [ "West", "Furniture", ], }, Object { "Sales": 220853.24900000007, + "__ROW_PATH_0__": "West", + "__ROW_PATH_1__": "Office Supplies", "__ROW_PATH__": Array [ "West", "Office Supplies", ], }, Object { "Sales": 251991.83199999997, + "__ROW_PATH_0__": "West", + "__ROW_PATH_1__": "Technology", "__ROW_P
[client-node] › rust/perspective-js/test/js/duckdb/group_by.spec.js:17:5 › DuckDB Virtual Server group_by › single group_by: rust/perspective-js/test/js/duckdb/group_by.spec.js#L27
8) [client-node] › rust/perspective-js/test/js/duckdb/group_by.spec.js:17:5 › DuckDB Virtual Server group_by › single group_by Error: expect(received).toEqual(expected) // deep equality - Expected - 0 + Received + 5 Array [ Object { "Sales": 2297200.860299955, + "__ROW_PATH_0__": null, "__ROW_PATH__": Array [], }, Object { "Sales": 501239.8908000005, + "__ROW_PATH_0__": "Central", "__ROW_PATH__": Array [ "Central", ], }, Object { "Sales": 678781.2399999979, + "__ROW_PATH_0__": "East", "__ROW_PATH__": Array [ "East", ], }, Object { "Sales": 391721.9050000003, + "__ROW_PATH_0__": "South", "__ROW_PATH__": Array [ "South", ], }, Object { "Sales": 725457.8245000006, + "__ROW_PATH_0__": "West", "__ROW_PATH__": Array [ "West", ], }, ] 25 | expect(numRows).toBe(5); 26 | const json = await view.to_json(); > 27 | expect(json).toEqual([ | ^ 28 | { __ROW_PATH__: [], Sales: 2297200.860299955 }, 29 | { 30 | __ROW_PATH__: ["Central"], at /home/runner/work/perspective/perspective/rust/perspective-js/test/js/duckdb/group_by.spec.js:27:22
[client-node] › rust/perspective-js/test/js/duckdb/filter.spec.js:156:5 › DuckDB Virtual Server filter › filter with group_by: rust/perspective-js/test/js/duckdb/filter.spec.js#L167
7) [client-node] › rust/perspective-js/test/js/duckdb/filter.spec.js:156:5 › DuckDB Virtual Server filter › filter with group_by Error: expect(received).toEqual(expected) // deep equality - Expected - 0 + Received + 4 Array [ Object { "Sales": 725457.8245000006, + "__ROW_PATH_0__": null, "__ROW_PATH__": Array [], }, Object { "Sales": 252612.7435000003, + "__ROW_PATH_0__": "Furniture", "__ROW_PATH__": Array [ "Furniture", ], }, Object { "Sales": 220853.24900000007, + "__ROW_PATH_0__": "Office Supplies", "__ROW_PATH__": Array [ "Office Supplies", ], }, Object { "Sales": 251991.83199999997, + "__ROW_PATH_0__": "Technology", "__ROW_PATH__": Array [ "Technology", ], }, ] 165 | expect(numRows).toBe(4); 166 | const json = await view.to_json(); > 167 | expect(json).toEqual([ | ^ 168 | { __ROW_PATH__: [], Sales: 725457.8245000006 }, 169 | { 170 | __ROW_PATH__: ["Furniture"], at /home/runner/work/perspective/perspective/rust/perspective-js/test/js/duckdb/filter.spec.js:167:22
[client-node] › rust/perspective-js/test/js/duckdb/expressions.spec.js:63:5 › DuckDB Virtual Server expressions › expression with group_by: rust/perspective-js/test/js/duckdb/expressions.spec.js#L73
6) [client-node] › rust/perspective-js/test/js/duckdb/expressions.spec.js:63:5 › DuckDB Virtual Server expressions › expression with group_by Error: expect(received).toEqual(expected) // deep equality - Expected - 0 + Received + 5 @@ -1,29 +1,34 @@ Array [ Object { + "__ROW_PATH_0__": null, "__ROW_PATH__": Array [], "total": 2583597.882000014, }, Object { + "__ROW_PATH_0__": "Central", "__ROW_PATH__": Array [ "Central", ], "total": 540946.2532999996, }, Object { + "__ROW_PATH_0__": "East", "__ROW_PATH__": Array [ "East", ], "total": 770304.0199999991, }, Object { + "__ROW_PATH_0__": "South", "__ROW_PATH__": Array [ "South", ], "total": 438471.33530000027, }, Object { + "__ROW_PATH_0__": "West", "__ROW_PATH__": Array [ "West", ], "total": 833876.2733999988, }, 71 | 72 | const json = await view.to_json(); > 73 | expect(json).toEqual([ | ^ 74 | { __ROW_PATH__: [], total: 2583597.882000014 }, 75 | { 76 | __ROW_PATH__: ["Central"], at /home/runner/work/perspective/perspective/rust/perspective-js/test/js/duckdb/expressions.spec.js:73:22
[client-node] › rust/perspective-js/test/js/duckdb/combined.spec.js:250:5 › DuckDB Virtual Server combined operations › expressions + group_by + sort: rust/perspective-js/test/js/duckdb/combined.spec.js#L261
5) [client-node] › rust/perspective-js/test/js/duckdb/combined.spec.js:250:5 › DuckDB Virtual Server combined operations › expressions + group_by + sort Error: expect(received).toEqual(expected) // deep equality - Expected - 0 + Received + 5 @@ -1,29 +1,34 @@ Array [ Object { + "__ROW_PATH_0__": null, "__ROW_PATH__": Array [], "profitmargin": 12.031392972104467, }, Object { + "__ROW_PATH_0__": "West", "__ROW_PATH__": Array [ "West", ], "profitmargin": 21.948661793784012, }, Object { + "__ROW_PATH_0__": "East", "__ROW_PATH__": Array [ "East", ], "profitmargin": 16.722695960406636, }, Object { + "__ROW_PATH_0__": "South", "__ROW_PATH__": Array [ "South", ], "profitmargin": 16.35190329218107, }, Object { + "__ROW_PATH_0__": "Central", "__ROW_PATH__": Array [ "Central", ], "profitmargin": -10.407293926323575, }, 259 | 260 | const json = await view.to_json(); > 261 | expect(json).toEqual([ | ^ 262 | { 263 | __ROW_PATH__: [], 264 | profitmargin: 12.031392972104467, at /home/runner/work/perspective/perspective/rust/perspective-js/test/js/duckdb/combined.spec.js:261:22
[client-node] › rust/perspective-js/test/js/duckdb/combined.spec.js:199:5 › DuckDB Virtual Server combined operations › flat + multi group_by + split_by + sort: rust/perspective-js/test/js/duckdb/combined.spec.js#L210
4) [client-node] › rust/perspective-js/test/js/duckdb/combined.spec.js:199:5 › DuckDB Virtual Server combined operations › flat + multi group_by + split_by + sort Error: expect(received).toEqual(expected) // deep equality - Expected - 0 + Received + 10 @@ -2,50 +2,60 @@ Object { "First Class|Sales": 40018.829499999985, "Same Day|Sales": 14527.978000000001, "Second Class|Sales": 54155.6555, "Standard Class|Sales": 143910.28049999996, + "__ROW_PATH_0__": "West", + "__ROW_PATH_1__": "Furniture", "__ROW_PATH__": Array [ "West", "Furniture", ], }, Object { "First Class|Sales": 61107.98900000001, "Same Day|Sales": 19218.053999999993, "Second Class|Sales": 38610.979999999996, "Standard Class|Sales": 133054.809, + "__ROW_PATH_0__": "West", + "__ROW_PATH_1__": "Technology", "__ROW_PATH__": Array [ "West", "Technology", ], }, Object { "First Class|Sales": 28635.06999999996, "Same Day|Sales": 9857.678000000002, "Second Class|Sales": 52572.79199999999, "Standard Class|Sales": 129787.70900000003, + "__ROW_PATH_0__": "West", + "__ROW_PATH_1__": "Office Supplies", "__ROW_PATH__": Array [ "West", "Office Supplies", ], }, Object { "First Class|Sales": 47693.312999999995, "Same Day|Sales": 21349.464999999997, "Second Class|Sales": 29304.490000000005, "Standard Class|Sales": 166626.71300000005, + "__ROW_PATH_0__": "East", + "__ROW_PATH_1__": "Technology", "__ROW_PATH__": Array [ "East", "Technology", ], }, Object { "First Class|Sales": 29410.643999999997, "Same Day|Sales": 12852.570999999996, "Second Class|Sales": 44035.937000000005, "Standard Class|Sales": 121992.05199999997, + "__ROW_PATH_0__": "East", + "__ROW_PATH_1__": "Furniture", "__ROW_PATH__": Array [ "East", "Furniture", ], }, 208 | }); 209 | const json = await view.to_json({ start_row: 0, end_row: 5 }); > 210 | expect(json).toEqual([ | ^ 211 | { 212 | __ROW_PATH__: ["West", "Furniture"], 213 | "First Class|Sales": 40018.829499999985, at /home/runner/work/perspective/perspective/rust/perspective-js/test/js/duckdb/combined.spec.js:210:22
[client-node] › rust/perspective-js/test/js/duckdb/combined.spec.js:164:5 › DuckDB Virtual Server combined operations › flat + multi group_by + sort: rust/perspective-js/test/js/duckdb/combined.spec.js#L174
3) [client-node] › rust/perspective-js/test/js/duckdb/combined.spec.js:164:5 › DuckDB Virtual Server combined operations › flat + multi group_by + sort Error: expect(received).toEqual(expected) // deep equality - Expected - 0 + Received + 10 @@ -1,36 +1,46 @@ Array [ Object { "Sales": 252612.7435000003, + "__ROW_PATH_0__": "West", + "__ROW_PATH_1__": "Furniture", "__ROW_PATH__": Array [ "West", "Furniture", ], }, Object { "Sales": 251991.83199999997, + "__ROW_PATH_0__": "West", + "__ROW_PATH_1__": "Technology", "__ROW_PATH__": Array [ "West", "Technology", ], }, Object { "Sales": 220853.24900000007, + "__ROW_PATH_0__": "West", + "__ROW_PATH_1__": "Office Supplies", "__ROW_PATH__": Array [ "West", "Office Supplies", ], }, Object { "Sales": 264973.9810000003, + "__ROW_PATH_0__": "East", + "__ROW_PATH_1__": "Technology", "__ROW_PATH__": Array [ "East", "Technology", ], }, Object { "Sales": 208291.20400000009, + "__ROW_PATH_0__": "East", + "__ROW_PATH_1__": "Furniture", "__ROW_PATH__": Array [ "East", "Furniture", ], }, 172 | }); 173 | const json = await view.to_json({ start_row: 0, end_row: 5 }); > 174 | expect(json).toEqual([ | ^ 175 | { 176 | __ROW_PATH__: ["West", "Furniture"], 177 | Sales: 252612.7435000003, at /home/runner/work/perspective/perspective/rust/perspective-js/test/js/duckdb/combined.spec.js:174:22
[client-node] › rust/perspective-js/test/js/duckdb/combined.spec.js:45:5 › DuckDB Virtual Server combined operations › split_by + group_by + filter: rust/perspective-js/test/js/duckdb/combined.spec.js#L67
2) [client-node] › rust/perspective-js/test/js/duckdb/combined.spec.js:45:5 › DuckDB Virtual Server combined operations › split_by + group_by + filter Error: expect(received).toEqual(expected) // deep equality - Expected - 0 + Received + 4 @@ -2,35 +2,39 @@ Object { "Central|Sales": 332883.0567999998, "East|Sales": 455143.735, "South|Sales": 274208.7699999999, "West|Sales": 470561.28350000136, + "__ROW_PATH_0__": null, "__ROW_PATH__": Array [], }, Object { "Central|Sales": 111457.73279999988, "East|Sales": 140376.95899999997, "South|Sales": 80859.618, "West|Sales": 165219.5734999998, + "__ROW_PATH_0__": "Furniture", "__ROW_PATH__": Array [ "Furniture", ], }, Object { "Central|Sales": 103937.78599999992, "East|Sales": 135823.893, "South|Sales": 84393.3579999999, "West|Sales": 140206.93099999975, + "__ROW_PATH_0__": "Office Supplies", "__ROW_PATH__": Array [ "Office Supplies", ], }, Object { "Central|Sales": 117487.53800000002, "East|Sales": 178942.883, "South|Sales": 108955.79400000005, "West|Sales": 165134.77900000007, + "__ROW_PATH_0__": "Technology", "__ROW_PATH__": Array [ "Technology", ], }, ] 65 | 66 | const json = await view.to_json(); > 67 | expect(json).toEqual([ | ^ 68 | { 69 | __ROW_PATH__: [], 70 | "Central|Sales": 332883.0567999998, at /home/runner/work/perspective/perspective/rust/perspective-js/test/js/duckdb/combined.spec.js:67:22
[client-node] › rust/perspective-js/test/js/duckdb/combined.spec.js:17:5 › DuckDB Virtual Server combined operations › group_by + filter + sort: rust/perspective-js/test/js/duckdb/combined.spec.js#L27
1) [client-node] › rust/perspective-js/test/js/duckdb/combined.spec.js:17:5 › DuckDB Virtual Server combined operations › group_by + filter + sort Error: expect(received).toEqual(expected) // deep equality - Expected - 0 + Received + 4 Array [ Object { "Sales": 725457.8245000006, + "__ROW_PATH_0__": null, "__ROW_PATH__": Array [], }, Object { "Sales": 252612.7435000003, + "__ROW_PATH_0__": "Furniture", "__ROW_PATH__": Array [ "Furniture", ], }, Object { "Sales": 251991.83199999997, + "__ROW_PATH_0__": "Technology", "__ROW_PATH__": Array [ "Technology", ], }, Object { "Sales": 220853.24900000007, + "__ROW_PATH_0__": "Office Supplies", "__ROW_PATH__": Array [ "Office Supplies", ], }, ] 25 | }); 26 | const json = await view.to_json(); > 27 | expect(json).toEqual([ | ^ 28 | { __ROW_PATH__: [], Sales: 725457.8245000006 }, 29 | { 30 | __ROW_PATH__: ["Furniture"], at /home/runner/work/perspective/perspective/rust/perspective-js/test/js/duckdb/combined.spec.js:27:22
test_python (windows-2025, x86_64, 3.11, 22.x, false)
Process completed with exit code 1.
test_python_sdist (ubuntu-22.04, x86_64, 3.11)
Process completed with exit code 1.
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, false)
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_python (macos-14, aarch64, 3.11, 22.x, false)
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, false)
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, false)
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, false)
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, false)
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_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_rust (windows-2025, x86_64, 22.x, false)
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_and_test_rust (windows-2025, x86_64, 22.x, false)
Cache paths are empty. Please check the previous logs and make sure that the python version is specified
build_and_test_rust (windows-2025, x86_64, 22.x, false)
The `python-version` input is not set. The version of Python currently in `PATH` will be used.
build_python (windows-2025, x86_64, 3.11, 22.x, false)
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_python (windows-2025, x86_64, 3.11, 22.x, false)
No files were found with the provided path: rust/target/wheels/*.whl. No artifacts will be uploaded.
test_python (ubuntu-22.04, x86_64, 3.11, 22.x, false)
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, false)
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_and_test_jupyterlab (macos-14, aarch64, 3.11, 22.x, false)
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, 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, false)
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 (windows-2025, x86_64, 3.11, 22.x, false)
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_and_test_jupyterlab (windows-2025, x86_64, 3.11, 22.x, false)
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/
benchmark_js (ubuntu-22.04, 22.x)
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: 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/
benchmark_python (ubuntu-22.04, 3.11, 22.x, x86_64)
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_sdist (ubuntu-22.04, x86_64, 3.11)
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_and_test_rust (windows-2025, x86_64, 22.x, false)
NOTICE: windows-2025 requests are being redirected to windows-2025-vs2026 by June 15, 2026
build_python (windows-2025, x86_64, 3.11, 22.x, false)
NOTICE: windows-2025 requests are being redirected to windows-2025-vs2026 by June 15, 2026
🎭 Playwright Run Summary
197 failed [client-node] › rust/perspective-js/test/js/duckdb/combined.spec.js:17:5 › DuckDB Virtual Server combined operations › group_by + filter + sort [client-node] › rust/perspective-js/test/js/duckdb/combined.spec.js:45:5 › DuckDB Virtual Server combined operations › split_by + group_by + filter [client-node] › rust/perspective-js/test/js/duckdb/combined.spec.js:164:5 › DuckDB Virtual Server combined operations › flat + multi group_by + sort [client-node] › rust/perspective-js/test/js/duckdb/combined.spec.js:199:5 › DuckDB Virtual Server combined operations › flat + multi group_by + split_by + sort [client-node] › rust/perspective-js/test/js/duckdb/combined.spec.js:250:5 › DuckDB Virtual Server combined operations › expressions + group_by + sort [client-node] › rust/perspective-js/test/js/duckdb/expressions.spec.js:63:5 › DuckDB Virtual Server expressions › expression with group_by [client-node] › rust/perspective-js/test/js/duckdb/filter.spec.js:156:5 › DuckDB Virtual Server filter › filter with group_by [client-node] › rust/perspective-js/test/js/duckdb/group_by.spec.js:17:5 › DuckDB Virtual Server group_by › single group_by [client-node] › rust/perspective-js/test/js/duckdb/group_by.spec.js:43:5 › DuckDB Virtual Server group_by › multi-level group_by [client-node] › rust/perspective-js/test/js/duckdb/group_by.spec.js:115:5 › DuckDB Virtual Server group_by › group_by with count aggregate [client-node] › rust/perspective-js/test/js/duckdb/group_by.spec.js:133:5 › DuckDB Virtual Server group_by › group_by with avg aggregate [client-node] › rust/perspective-js/test/js/duckdb/group_by.spec.js:159:5 › DuckDB Virtual Server group_by › group_by with min aggregate [client-node] › rust/perspective-js/test/js/duckdb/group_by.spec.js:177:5 › DuckDB Virtual Server group_by › group_by with max aggregate [client-node] › rust/perspective-js/test/js/duckdb/group_rollup_mode.spec.js:17:5 › DuckDB Virtual Server group_rollup_mode › flat mode with group_by [client-node] › rust/perspective-js/test/js/duckdb/group_rollup_mode.spec.js:43:5 › DuckDB Virtual Server group_rollup_mode › flat mode with multi-level group_by [client-node] › rust/perspective-js/test/js/duckdb/group_rollup_mode.spec.js:107:5 › DuckDB Virtual Server group_rollup_mode › flat mode with group_by and split_by [client-node] › rust/perspective-js/test/js/duckdb/group_rollup_mode.spec.js:145:5 › DuckDB Virtual Server group_rollup_mode › flat mode with group_by and split_by and sort [client-node] › rust/perspective-js/test/js/duckdb/group_rollup_mode.spec.js:184:5 › DuckDB Virtual Server group_rollup_mode › flat mode with group_by and sort [client-node] › rust/perspective-js/test/js/duckdb/sort.spec.js:51:5 › DuckDB Virtual Server sort › sort with group_by [client-node] › rust/perspective-js/test/js/duckdb/split_by.spec.js:17:5 › DuckDB Virtual Server split_by › single split_by [client-node] › rust/perspective-js/test/js/duckdb/split_by.spec.js:69:5 › DuckDB Virtual Server split_by › split_by with group_by and count aggregate [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
🎭 Playwright Run Summary
3 passed (6.1s)
test_python (windows-2025, x86_64, 3.11, 22.x, false)
NOTICE: windows-2025 requests are being redirected to windows-2025-vs2026 by June 15, 2026
build_and_test_jupyterlab (windows-2025, x86_64, 3.11, 22.x, false)
NOTICE: windows-2025 requests are being redirected to windows-2025-vs2026 by June 15, 2026

Artifacts

Produced during runtime
Name Size Digest
perspective-js-benchmarks
219 KB
sha256:45440aea080f3a197a63d906a7625509747b27cb224d8d6a0d848df18c0946eb
perspective-js-dist
10.8 MB
sha256:097a10609cb372c5bfc911562f43bcecca29e66504e6fb858e6a59f07e9a15de
perspective-js-test-results
309 KB
sha256:7ebbbed63b1f73d431cb2626fb18e05999baf13203e7258c557d04cca6027fba
perspective-metadata
635 KB
sha256:dade35b0bc52984fb6101659b8936c466e8a5bf992d36a3c1f26d401989689a2
perspective-python-benchmarks
115 KB
sha256:e3ec388d756c8930cb71be092976ad2427bd31b5d0fd76007afb90fac0e15bdc
perspective-python-dist-aarch64-macos-14-3.11
8.06 MB
sha256:3edfc39769221351524f783b4b7c1951ca88fc5eeba883b0212ce508f12a1ef7
perspective-python-dist-aarch64-ubuntu-22.04-arm-3.11
5.82 MB
sha256:dae416a2a2ce4444d5e8d9c3ecd43c1e32de169af80dd789b261ac098097cba9
perspective-python-dist-wasm32-emscripten-3.11
3.1 MB
sha256:84cb33afa941faa94741799a80f96fa3e05fe161c7e6ee4195cc09f6462b9116
perspective-python-dist-x86_64-ubuntu-22.04-3.11
9.4 MB
sha256:d5891d3b51bc6f2adbf9dfba11e0d002d4e6d08e494553942795f61fe96ce0a1
perspective-python-dist-x86_64-windows-2025-3.11
7.71 MB
sha256:ae8633050ed836f9eb8e2b13f6759ebc16890fa8b5cb83e7c0ad61cecad9a6d4
perspective-python-sdist
3.6 MB
sha256:460f0d59c07efd9ded186ed98240a7b63bb5de5a8aef73ef7cc4c2d41bd90920
perspective-rust
1.03 MB
sha256:d88e6c08f5aafb48163b93da884d29a63ce9eec7583aae87031760e9071fc94a