# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
---
loader: taskgraph.loader.transform:loader

transforms:
    - fenix_taskgraph.transforms.test:transforms
    - taskgraph.transforms.job:transforms
    - taskgraph.transforms.task:transforms

job-defaults:
    attributes:
        build-type: debug
        code-review: true
        retrigger: true
    dependencies:
            signing: signing-debug
            signing-android-test: signing-android-test-debug
    include-pull-request-number: true
    routes:
        - notify.slack-channel.G016BC5FUHJ.on-failed
    scopes:
        - queue:route:notify.slack-channel.G016BC5FUHJ.on-failed
        - notify:slack-channel:G016BC5FUHJ
    extra:
        notify:
            # slackText: 'https://firefox-ci-tc.services.mozilla.com/tasks/${status.taskId} | ${task.metadata.name} | ${task.metadata.source}'
            slackBlocks: |
                [
                  {
                    "type": "header",
                    "text": {
                      "type": "plain_text",
                      "text": "Fenix :firefox: ${task.metadata.name} :x:\n "
                    }
                  },
                  {
                    "type": "divider"
                  },
                  {
                     "type": "section",
                     "text": {
                         "type": "mrkdwn",
                         "text": "*Task*: <https://firefox-ci-tc.services.mozilla.com/tasks/${status.taskId}|Taskcluster>"
                    }
                  },                  
                  {
                    "type": "section",
                    "text": {
                      "type": "mrkdwn",
                      "text": "*Owner*: ${task.metadata.owner}"
                    }
                  },
                  {
                    "type": "section",
                    "text": {
                      "type": "mrkdwn",
                      "text": "*Source*: <${task.payload.env.MOBILE_BASE_REPOSITORY}/commit/${task.payload.env.MOBILE_HEAD_REV}|Commit> :github:"
                    }
                  },
                  {
                    "type": "divider"
                  },
                  {
                    "type": "context",
                    "elements": [
                        {
                            "type": "mrkdwn",
                            "text": ":testops-notify: created by <https://mana.mozilla.org/wiki/x/P_zNBw|Mobile Test Engineering>"
                        }
                    ]
                  }
                ]
    run:
        commands:
            - [wget, {artifact-reference: '<signing/public/build/x86/target.apk>'}, '-O', app.apk]
            - [wget, {artifact-reference: '<signing-android-test/public/build/noarch/target.apk>'}, '-O', android-test.apk]
        secrets:
            - name: project/mobile/fenix/firebase
              key: firebaseToken
              path: .firebase_token.json
              json: true
        using: run-commands
        use-caches: false
    treeherder:
        kind: test
        platform: 'ui-test/opt'
        tier: 2
    worker:
        docker-image: {in-tree: ui-tests}
        max-run-time: 7200
        env:
            GOOGLE_APPLICATION_CREDENTIALS: '.firebase_token.json'
            GOOGLE_PROJECT: moz-fenix
        artifacts:
            - name: public
              path: /builds/worker/artifacts
              type: directory
        retry-exit-status: [20]
    worker-type: b-android

jobs:
    x86-debug:
        description: Test Fenix
        run-on-tasks-for: [github-pull-request, github-push]
        run-on-git-branches: ["^((?!releases[_/]).+)$"]
        run:
            commands:
                - [automation/taskcluster/androidTest/ui-test.sh, x86, app.apk, android-test.apk, '-1']
        treeherder:
            symbol: debug(ui-test-x86)
    screenshots-x86:
        attributes:
            screenshots: true
        description: Run UI screenshots tests to keep them up to date
        run-on-tasks-for: []
        run-on-git-branches: [main]
        run:
            commands:
                - [automation/taskcluster/androidTest/ui-test.sh, x86-screenshots-tests, app.apk, android-test.apk, '-1']
        treeherder:
            symbol: debug(screenshots-x86)
    x86-beta:
        attributes:
            build-type: beta-firebase
        description: Test Fenix
        run-on-tasks-for: [github-push]
        run-on-git-branches: ["^releases[/_].+$"]
        dependencies:
            signing: signing-beta-firebase
            signing-android-test: signing-android-test-beta
        run:
            commands:
                - [automation/taskcluster/androidTest/ui-test.sh, x86-beta-tests, app.apk, android-test.apk, '50']
        treeherder:
            symbol: beta(ui-test-x86-beta)
    x86-nightly:
        attributes:
            build-type: nightly-firebase
        description: Test Fenix
        run-on-tasks-for: [github-push]
        dependencies:
            signing: signing-nightly-firebase
            signing-android-test: signing-android-test-nightly
        run:
            commands:
                - [automation/taskcluster/androidTest/ui-test.sh, x86-start-test, app.apk, android-test.apk, '-1']
        treeherder:
            symbol: nightly(ui-test-x86-nightly)
    legacy-x86:
        attributes:
            legacy: true
        description: Run select UI tests on older Android API on cron
        run-on-tasks-for: []
        run-on-git-branches: [main]
        run:
            commands:
                - [automation/taskcluster/androidTest/ui-test.sh, x86-legacy-api-tests, app.apk, android-test.apk, '-1']
        treeherder:
            symbol: debug(legacy-x86)
