Skip to content

fix(rbac): RBAC dynamic grants + API ACL enforcement #1290

fix(rbac): RBAC dynamic grants + API ACL enforcement

fix(rbac): RBAC dynamic grants + API ACL enforcement #1290

Triggered via pull request July 6, 2026 23:39
@lane711lane711
synchronize #998
Status Failure
Total duration 1m 37s
Artifacts

pr-tests.yml

on: pull_request_target
Fit to window
Zoom out
Zoom in

Annotations

4 errors and 3 warnings
test
Process completed with exit code 1.
src/__tests__/templates/admin-layout-catalyst.test.ts > renderAdminLayoutCatalyst > Dynamic Menu Items > should render dynamic menu items: packages/core/src/__tests__/templates/admin-layout-catalyst.test.ts#L331
AssertionError: expected '<!DOCTYPE html>\n<html lang="en" clas…' to contain 'Custom Page' - Expected + Received - Custom Page + <!DOCTYPE html> + <html lang="en" class="dark"> + <head> + <meta charset="UTF-8"> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <title>Test Page - SonicJS AI Admin</title> + <link rel="icon" type="image/svg+xml" href="/favicon.svg"> + + <!-- Tailwind CSS --> + <script src="https://cdn.tailwindcss.com"></script> + <script> + tailwind.config = { + darkMode: 'class', + theme: { + extend: { + colors: { + zinc: { + 50: '#fafafa', + 100: '#f4f4f5', + 200: '#e4e4e7', + 300: '#d4d4d8', + 400: '#a1a1aa', + 500: '#71717a', + 600: '#52525b', + 700: '#3f3f46', + 800: '#27272a', + 900: '#18181b', + 950: '#09090b' + } + } + } + } + } + </script> + + <!-- Additional Styles --> + <style> + @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap'); + + * { + margin: 0; + padding: 0; + box-sizing: border-box; + } + + body { + font-family: 'Inter', system-ui, -apple-system, sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } + + /* Custom scrollbar */ + ::-webkit-scrollbar { + width: 8px; + height: 8px; + } + + ::-webkit-scrollbar-track { + background: #27272a; + } + + ::-webkit-scrollbar-thumb { + background: #52525b; + border-radius: 4px; + } + + ::-webkit-scrollbar-thumb:hover { + background: #71717a; + } + + /* Smooth transitions */ + * { + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; + } + .plugins-closed [data-plugins-submenu] { display: none; } + </style> + <!-- Restore plugins submenu state before first paint (no flash) --> + <script>(function(){try{var c=document.cookie.split(';').reduce(function(v,p){var t=p.trim().split('=');return t[0]==='plugins_menu_open'?t[1]:v;},null);if(c==='0'){document.documentElement.classList.add('plugins-closed');document.addEventListener('DOMContentLoaded',function(){var ch=document.querySelector('[data-plugins-chevron]');if(ch)ch.classList.remove('rotate-180');});};}catch(e){}})();</script> + + <!-- Scripts --> + <script src="https://unpkg.com/htmx.org@2.0.3"></script> + <script src="https://unpkg.com/alpinejs@3.x.x/dist/cdn.min.js" defer></script> + <script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.0/dist/chart.umd.min.js"></script> + + <!-- CSRF: Auto-attach token to all HTMX and fetch requests --> + <script> + function getCsrfToken() { + var cookie = document.cookie.split('; ') + .find(function(row) { return row.startsWith('csrf_token='); }); + return cookie ? cookie.substring(cookie.indexOf('=') + 1) : ''; + } + + document.addEventListener('htmx:configRequest', function(event) { + var token = getCsrfToken(); + if (token) { + event.detail.headers['X-CSRF-Token'] = token; + } + }); + + (function() { + var originalFetch = window.fetch; + window.fetch = function(url, options) { + options = options || {}; + var method = (options.method || 'GET').toUpperCase(); + if (method !== 'GET' && method !== 'HEAD' && method !== 'OPTIONS') { + options.headers = options.headers || {}; + if (options.headers instanceof Headers) { + if (!options.headers.has('X-CSRF-Token')) { + options.headers.set('X-CSRF-Token', getCsrfToken()); + } + } else if (!Array.isArray(options.headers) && !options.headers['X-CSRF-Token']) { + opt
src/__tests__/templates/admin-layout-catalyst.test.ts > renderAdminLayoutCatalyst > Sidebar Navigation > should render default menu items: packages/core/src/__tests__/templates/admin-layout-catalyst.test.ts#L282
AssertionError: expected '<!DOCTYPE html>\n<html lang="en" clas…' to contain 'Users' - Expected + Received - Users + <!DOCTYPE html> + <html lang="en" class="dark"> + <head> + <meta charset="UTF-8"> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <title>Test Page - SonicJS AI Admin</title> + <link rel="icon" type="image/svg+xml" href="/favicon.svg"> + + <!-- Tailwind CSS --> + <script src="https://cdn.tailwindcss.com"></script> + <script> + tailwind.config = { + darkMode: 'class', + theme: { + extend: { + colors: { + zinc: { + 50: '#fafafa', + 100: '#f4f4f5', + 200: '#e4e4e7', + 300: '#d4d4d8', + 400: '#a1a1aa', + 500: '#71717a', + 600: '#52525b', + 700: '#3f3f46', + 800: '#27272a', + 900: '#18181b', + 950: '#09090b' + } + } + } + } + } + </script> + + <!-- Additional Styles --> + <style> + @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap'); + + * { + margin: 0; + padding: 0; + box-sizing: border-box; + } + + body { + font-family: 'Inter', system-ui, -apple-system, sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } + + /* Custom scrollbar */ + ::-webkit-scrollbar { + width: 8px; + height: 8px; + } + + ::-webkit-scrollbar-track { + background: #27272a; + } + + ::-webkit-scrollbar-thumb { + background: #52525b; + border-radius: 4px; + } + + ::-webkit-scrollbar-thumb:hover { + background: #71717a; + } + + /* Smooth transitions */ + * { + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; + } + .plugins-closed [data-plugins-submenu] { display: none; } + </style> + <!-- Restore plugins submenu state before first paint (no flash) --> + <script>(function(){try{var c=document.cookie.split(';').reduce(function(v,p){var t=p.trim().split('=');return t[0]==='plugins_menu_open'?t[1]:v;},null);if(c==='0'){document.documentElement.classList.add('plugins-closed');document.addEventListener('DOMContentLoaded',function(){var ch=document.querySelector('[data-plugins-chevron]');if(ch)ch.classList.remove('rotate-180');});};}catch(e){}})();</script> + + <!-- Scripts --> + <script src="https://unpkg.com/htmx.org@2.0.3"></script> + <script src="https://unpkg.com/alpinejs@3.x.x/dist/cdn.min.js" defer></script> + <script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.0/dist/chart.umd.min.js"></script> + + <!-- CSRF: Auto-attach token to all HTMX and fetch requests --> + <script> + function getCsrfToken() { + var cookie = document.cookie.split('; ') + .find(function(row) { return row.startsWith('csrf_token='); }); + return cookie ? cookie.substring(cookie.indexOf('=') + 1) : ''; + } + + document.addEventListener('htmx:configRequest', function(event) { + var token = getCsrfToken(); + if (token) { + event.detail.headers['X-CSRF-Token'] = token; + } + }); + + (function() { + var originalFetch = window.fetch; + window.fetch = function(url, options) { + options = options || {}; + var method = (options.method || 'GET').toUpperCase(); + if (method !== 'GET' && method !== 'HEAD' && method !== 'OPTIONS') { + options.headers = options.headers || {}; + if (options.headers instanceof Headers) { + if (!options.headers.has('X-CSRF-Token')) { + options.headers.set('X-CSRF-Token', getCsrfToken()); + } + } else if (!Array.isArray(options.headers) && !options.headers['X-CSRF-Token']) { + options.headers
src/__tests__/routes/admin-users-profile.test.ts > Admin Users - Profile on Edit Page > PUT /admin/users/:id > should skip the profile write when no profile fields are submitted: packages/core/src/__tests__/routes/admin-users-profile.test.ts#L344
AssertionError: expected 3 to be 2 // Object.is equality - Expected + Received - 2 + 3 ❯ src/__tests__/routes/admin-users-profile.test.ts:344:48
test
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4, actions/setup-node@v4, actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
test
No files were found with the provided path: test-results/**/*.webm playwright-report/**/*.webm. No artifacts will be uploaded.
test
No files were found with the provided path: playwright-report/. No artifacts will be uploaded.