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 --no-progress ${{ 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 --no-progress 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
