name: "Run e2e with Env" run-name: "Run e2e with Env - ${{ inputs.url }}" description: "Run e2e tests with environment variables" on: workflow_dispatch: inputs: url: description: 'Application URL' required: true default: 'https://acadev.envalfresco.com' playwright_e2e_host: description: 'Playwright E2E host (e.g. https://acadev.envalfresco.com)' required: false default: 'http://localhost:4200' env: BASE_URL: ${{ inputs.url || secrets.PIPELINE_ENV_URL }} ADMIN_EMAIL: ${{ secrets.PIPELINE_ADMIN_USERNAME }} ADMIN_PASSWORD: ${{ secrets.FRONTEND_TEST_ADMIN_PASSWORD }} HR_USER: hruser HR_USER_PASSWORD: ${{ secrets.FRONTEND_TEST_USER_PASSWORD }} PLAYWRIGHT_E2E_HOST: ${{ inputs.playwright_e2e_host || inputs.url || secrets.PLAYWRIGHT_E2E_HOST }} GH_BUILD_NUMBER: ${{ github.run_id }} REPORT_PORTAL_URL: ${{ vars.REPORT_PORTAL_URL }} REPORT_PORTAL_TOKEN: ${{ secrets.REPORT_PORTAL_TOKEN }} MAXINSTANCES: 2 RETRY_COUNT: 2 jobs: verify-env: name: 'Verify target environment' runs-on: ubuntu-latest steps: - name: Verify admin credentials against target environment run: | STATUS=$(curl -s -o /dev/null -w "%{http_code}" \ -X POST "${BASE_URL}/alfresco/api/-default-/public/authentication/versions/1/tickets" \ -H "Content-Type: application/json" \ -d "{\"userId\":\"${ADMIN_EMAIL}\",\"password\":\"${ADMIN_PASSWORD}\"}") if [ "$STATUS" = "403" ] || [ "$STATUS" = "401" ]; then echo "::error::Authentication failed (HTTP $STATUS) for '${ADMIN_EMAIL}' against ${BASE_URL}." echo "::error::The environment is reachable but the admin credentials are wrong for this host." echo "::error::Check that the FRONTEND_TEST_ADMIN_PASSWORD secret matches this environment." exit 1 fi if [ "$STATUS" != "201" ]; then echo "::error::Unexpected response (HTTP $STATUS) from ${BASE_URL}. Environment may be down." exit 1 fi echo "Admin credentials verified against ${BASE_URL}." build: name: 'build' runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v7 with: fetch-depth: 2 - name: node uses: actions/setup-node@v7 with: node-version-file: '.nvmrc' cache: 'npm' - uses: ./.github/actions/before-install - run: npm ci - run: npm run ci:build -- aca-playwright-shared - run: npm run build -- $BUILD_OPTS - name: dist cache if: ${{ success() }} uses: actions/cache/save@v6 with: path: ./dist/content-ce key: cache-dist-${{ github.run_id }} e2es-playwright: needs: [build, verify-env] name: 'E2E Playwright - ${{ matrix.e2e-suites.name }}' runs-on: ubuntu-24.04 env: NODE_OPTIONS: --dns-result-order=ipv4first strategy: fail-fast: false matrix: e2e-suites: - name: "create-actions" id: 1 - name: "folder-rules" id: 2 - name: "viewer" id: 3 - name: "authentication" id: 4 - name: "navigation" id: 5 - name: "special-permissions" id: 6 - name: "pagination" id: 7 - name: "list-views" id: 8 - name: "share-action" id: 9 - name: "copy-move-actions" id: 10 - name: "library-actions" id: 11 - name: "info-drawer" id: 12 - name: "search" id: 13 - name: "upload-download-actions" id: 14 - name: "favorite-actions" id: 15 - name: "delete-actions" id: 16 - name: "edit-actions" id: 17 - name: "smoke-test" id: 18 - name: "folder-information-actions" id: 19 - name: "viewer-actions" id: 20 - name: "create-link-actions" id: 21 - name: "a11y-personal-files" id: 22 steps: - name: Checkout uses: actions/checkout@v7 with: fetch-depth: 2 - name: node uses: actions/setup-node@v7 with: node-version-file: '.nvmrc' cache: 'npm' - uses: ./.github/actions/before-install - run: npm ci - uses: actions/cache/restore@v6 id: cache with: path: ./dist/content-ce key: cache-dist-${{ github.run_id }} - name: Before e2e uses: ./.github/actions/before-e2e - name: Before playwright run: npm run ci:playwright:install - uses: ./.github/actions/run-e2e-playwright with: options: "${{ matrix.e2e-suites.name }}" artifact-name: ${{ matrix.e2e-suites.name }} test-runner: playwright - uses: ./.github/actions/after-e2e