name: Conformance test harness on: workflow_call: inputs: version: type: string required: false default: latest description: Version of the Conformance Test Harness that has to be tested against branch: type: string required: false description: branch to run tests against (used for matrix strategy) ignore_failures: type: boolean default: false description: Return succes even if there are failures? required: false workflow_dispatch: inputs: version: type: string required: false default: latest description: Version of the Conformance Test Harness that has to be tested against. ignore_failures: type: boolean default: false description: Return succes even if there are failures? required: false jobs: # Run the Conformance Test Harness and upload output as artifacts to GitHub conformance: continue-on-error: ${{ inputs.ignore_failures }} runs-on: ubuntu-latest timeout-minutes: 10 steps: - name: Use Node.js 16.x uses: actions/setup-node@v4 with: node-version: 16.x - name: Check out the project uses: actions/checkout@v4.1.1 with: ref: ${{ inputs.branch || github.ref }} - name: Install dependencies and run build scripts run: npm ci - name: Start the server in the background run: npm start > server-output.log & - name: Create the necessary folders run: mkdir -p reports/css - name: Pull the conformance harness docker run: 'docker pull solidproject/conformance-test-harness:${{ inputs.version }}' - name: Wait until the server has started run: > curl --output /dev/null --silent --head --fail --retry 30 --retry-connrefused --retry-delay 0 -k http://localhost:3000/ - name: Create users run: npx ts-node test/deploy/createAccountCredentials.ts http://localhost:3000/ >> test/deploy/conformance.env - name: Run the test harness run: > docker run -i --rm -v "$(pwd)"/reports/css:/reports --env-file=./test/deploy/conformance.env --network="host" solidproject/conformance-test-harness:${{ inputs.version }} --skip-teardown --output=/reports --target=https://github.com/solid/conformance-test-harness/css # Steps below use `always()` to make sure logs get uploaded in case the CTH errors - name: Sanitize branch name for artifact upload id: sanitize if: always() uses: yeouchien/sanitize-branch-name-action@v1 with: branch-name: ${{ inputs.branch || github.head_ref }} - name: Save the reports if: always() uses: actions/upload-artifact@v4 with: name: ${{ steps.sanitize.outputs.sanitized-branch-name }} reports path: reports - name: Save the server output if: always() uses: actions/upload-artifact@v4 with: name: ${{ steps.sanitize.outputs.sanitized-branch-name }} server output path: server-output.log