diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 0d778ef3..4a0ed899 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -125,6 +125,25 @@ jobs: - name: Install Playwright browsers run: node scripts/install-playwright-browsers.mjs chromium + - name: Set Playwright dev server port + shell: bash + env: + MATRIX_SUITE: ${{ matrix.suite }} + MATRIX_PROJECT: ${{ matrix.project }} + run: | + set -euo pipefail + case "$MATRIX_SUITE" in + core) suite_offset=0 ;; + changed) suite_offset=10 ;; + *) echo "Unsupported Playwright PR suite: $MATRIX_SUITE" >&2; exit 1 ;; + esac + case "$MATRIX_PROJECT" in + chromium-desktop) project_offset=1 ;; + chromium-mobile) project_offset=2 ;; + *) echo "Unsupported Playwright PR project: $MATRIX_PROJECT" >&2; exit 1 ;; + esac + echo "PLAYWRIGHT_DEV_PORT=$((5200 + suite_offset + project_offset))" >> "$GITHUB_ENV" + - name: Run Playwright smoke tests if: matrix.suite == 'core' run: | @@ -201,6 +220,35 @@ jobs: - name: Install Playwright browsers run: node scripts/install-playwright-browsers.mjs ${{ matrix.browser_install }} + - name: Set Playwright dev server port + shell: bash + env: + MATRIX_ROLE: ${{ matrix.role }} + MATRIX_BROWSER: ${{ matrix.browser }} + MATRIX_DEVICE: ${{ matrix.device }} + run: | + set -euo pipefail + case "$MATRIX_ROLE" in + customer) role_offset=0 ;; + subuser) role_offset=100 ;; + admin) role_offset=200 ;; + superuser) role_offset=300 ;; + *) echo "Unsupported Playwright role: $MATRIX_ROLE" >&2; exit 1 ;; + esac + case "$MATRIX_BROWSER" in + chromium) browser_offset=0 ;; + firefox) browser_offset=30 ;; + webkit) browser_offset=60 ;; + *) echo "Unsupported Playwright browser: $MATRIX_BROWSER" >&2; exit 1 ;; + esac + case "$MATRIX_DEVICE" in + mobile) device_offset=1 ;; + tablet) device_offset=2 ;; + desktop) device_offset=3 ;; + *) echo "Unsupported Playwright device: $MATRIX_DEVICE" >&2; exit 1 ;; + esac + echo "PLAYWRIGHT_DEV_PORT=$((5300 + role_offset + browser_offset + device_offset))" >> "$GITHUB_ENV" + - name: Run full Playwright slice run: | ulimit -n 16384 || true diff --git a/scripts/install-playwright-browsers.mjs b/scripts/install-playwright-browsers.mjs index d2dec551..2a86ed76 100644 --- a/scripts/install-playwright-browsers.mjs +++ b/scripts/install-playwright-browsers.mjs @@ -42,11 +42,10 @@ const writeOutput = (result) => { } }; -const isUnsupportedWithDepsFailure = (result) => { +const hasUnsupportedHostPlatformFailure = (result) => { const output = outputText(result); return ( result.status !== 0 && - /Cannot install dependencies for .* with Playwright/i.test(output) && /Playwright does not support .* on /i.test(output) ); }; @@ -58,7 +57,7 @@ if (withDepsResult.status === 0) { process.exit(0); } -if (!isUnsupportedWithDepsFailure(withDepsResult)) { +if (!hasUnsupportedHostPlatformFailure(withDepsResult)) { process.exit(withDepsResult.status ?? 1); } @@ -78,14 +77,14 @@ if (!fallbackHostPlatform) { console.warn( [ `Playwright could not install OS dependencies for ${unsupportedPlatform}.`, - `Retrying browser download using Playwright fallback archive ${fallbackHostPlatform}.`, + `Retrying browser installation using Playwright fallback archive ${fallbackHostPlatform}.`, "The self-hosted runner image must provide the required browser system libraries.", ].join("\n") ); -const browserOnlyResult = runPlaywrightInstall(requestedBrowsers, { +const fallbackResult = runPlaywrightInstall(requestedBrowsers, { PLAYWRIGHT_HOST_PLATFORM_OVERRIDE: fallbackHostPlatform, PLAYWRIGHT_SKIP_VALIDATE_HOST_REQUIREMENTS: "1", }); -writeOutput(browserOnlyResult); -process.exit(browserOnlyResult.status ?? 1); +writeOutput(fallbackResult); +process.exit(fallbackResult.status ?? 1); diff --git a/src/components/release/ReleaseContextBar.vue b/src/components/release/ReleaseContextBar.vue index 433e2a5d..d322ea66 100644 --- a/src/components/release/ReleaseContextBar.vue +++ b/src/components/release/ReleaseContextBar.vue @@ -295,10 +295,23 @@ const branchWarning = computed(() => min-width: 12rem; } +.release-context-bar__status { + align-items: flex-start; + flex-wrap: wrap; +} + +.release-context-bar__status .tag { + flex: 0 0 auto; +} + .release-context-bar__warning { color: #9f1f17; + flex: 1 1 12rem; font-size: 0.82rem; - overflow-wrap: anywhere; + line-height: 1.25; + min-width: min(12rem, 100%); + overflow-wrap: break-word; + word-break: normal; } .release-context-bar__endpoints { diff --git a/src/views/dashboards/departmentDashboard/other/displays/DepartmentDailyReportThisWeek.vue b/src/views/dashboards/departmentDashboard/other/displays/DepartmentDailyReportThisWeek.vue index 9e6b4c8e..df25ba44 100644 --- a/src/views/dashboards/departmentDashboard/other/displays/DepartmentDailyReportThisWeek.vue +++ b/src/views/dashboards/departmentDashboard/other/displays/DepartmentDailyReportThisWeek.vue @@ -1,5 +1,5 @@