name: 'UI report' description: 'Prepare and upload HTML report of UI test results' inputs: model: description: 'Internal model name' required: true lang: description: 'Firmware language code' required: true status: description: 'Either "success" or "failure"' required: false default: "failure" runs: using: composite steps: - name: Set AWS credentials uses: aws-actions/configure-aws-credentials@v4 with: role-to-assume: arn:aws:iam::538326561891:role/gh_actions_deploy_dev_firmware_data aws-region: eu-west-1 - run: | MODELJOB=${{ inputs.model }}-${{ inputs.lang }}-${{ github.job }} OUTDIR=${{ github.run_id }}/$MODELJOB mkdir -p $OUTDIR nix-shell --run "poetry run python ci/prepare_ui_artifacts.py || true" mv tests/ui_tests/reports/test/* $OUTDIR || true mv tests/ui_tests/fixtures.*.json $OUTDIR || true mv tests/trezor.log $OUTDIR || true diff -u tests/ui_tests/fixtures.json tests/ui_tests/fixtures.suggestion.json || true tar -cf screens_$MODELJOB.tar tests/ui_tests/screens || true if [ "${{ inputs.status }}" = "success" ]; then cp .github/actions/ui-report/success.png $OUTDIR/status.png else cp .github/actions/ui-report/failure.png $OUTDIR/status.png fi shell: sh - name: Upload report run: | aws s3 sync ${{ github.run_id }} s3://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }} echo "[UI test report](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/${{ inputs.model }}-${{ inputs.lang }}-${{ github.job }}/index.html)" >> $GITHUB_STEP_SUMMARY shell: sh - name: Upload test screen recording run: | aws s3 sync ci/ui_test_records s3://data.trezor.io/dev/firmware/ui_tests # TODO: generate directory listing / autoindex shell: sh - uses: actions/upload-artifact@v4 with: name: ui-records-${{ github.job }}-${{ strategy.job-index }} path: | # used by core_ui_main screens_${{ inputs.model }}-${{ inputs.lang }}-${{ github.job }}.tar retention-days: 1 # not useful after workflow finishes