diff --git a/.github/workflows/e2e-detox-template.yml b/.github/workflows/e2e-detox-template.yml index 4eb95a70c13..5812bb8417d 100644 --- a/.github/workflows/e2e-detox-template.yml +++ b/.github/workflows/e2e-detox-template.yml @@ -50,6 +50,8 @@ env: ADMIN_EMAIL: ${{ secrets.MM_MOBILE_E2E_ADMIN_EMAIL }} ADMIN_USERNAME: ${{ inputs.MM_TEST_USER_NAME || secrets.MM_MOBILE_E2E_ADMIN_USERNAME }} ADMIN_PASSWORD: ${{ inputs.MM_TEST_PASSWORD || secrets.MM_MOBILE_E2E_ADMIN_PASSWORD }} + BRANCH: ${{ github.head_ref || github.ref_name }} + COMMIT_HASH: ${{ github.sha }} DETOX_AWS_S3_BUCKET: "mattermost-detox-report" HEADLESS: "true" TYPE: ${{ inputs.run-type }} diff --git a/detox/save_report.js b/detox/save_report.js index 443649630cb..a14f72f0f12 100644 --- a/detox/save_report.js +++ b/detox/save_report.js @@ -36,11 +36,11 @@ const os = require('os'); const path = require('path'); const fse = require('fs-extra'); -const { mergeFiles } = require('junit-report-merger'); +const {mergeFiles} = require('junit-report-merger'); const shell = require('shelljs'); -const { saveArtifacts } = require('./utils/artifacts'); -const { ARTIFACTS_DIR } = require('./utils/constants'); +const {saveArtifacts} = require('./utils/artifacts'); +const {ARTIFACTS_DIR} = require('./utils/constants'); const { generateJestStareHtmlReport, mergeJestStareJsonFiles, @@ -55,7 +55,7 @@ const { readJsonFromFile, writeJsonToFile, } = require('./utils/report'); -const { createTestCycle, createTestExecutions } = require('./utils/test_cases'); +const {createTestCycle, createTestExecutions} = require('./utils/test_cases'); require('dotenv').config(); @@ -69,7 +69,6 @@ const saveReport = async () => { WEBHOOK_URL, ZEPHYR_ENABLE, ZEPHYR_CYCLE_KEY, - REPORT_PATH, } = process.env; // Remove old generated reports @@ -105,7 +104,7 @@ const saveReport = async () => { // Read XML from a file const xml = fse.readFileSync(combinedFilePath); - const { testsuites } = convertXmlToJson(xml); + const {testsuites} = convertXmlToJson(xml); // Generate short summary, write to file and then send report via webhook const allTests = getAllTests(testsuites); @@ -133,7 +132,7 @@ const saveReport = async () => { } } } - const result = await saveArtifacts(REPORT_PATH); + const result = await saveArtifacts(); if (result && result.success) { console.log('Successfully uploaded artifacts to S3:', result.reportLink); } diff --git a/detox/utils/artifacts.js b/detox/utils/artifacts.js index 14c369bdb48..e909db98e4c 100644 --- a/detox/utils/artifacts.js +++ b/detox/utils/artifacts.js @@ -21,6 +21,7 @@ const { DETOX_AWS_ACCESS_KEY_ID, DETOX_AWS_SECRET_ACCESS_KEY, IOS, + REPORT_PATH, } = process.env; const platform = IOS === 'true' ? 'ios' : 'android'; @@ -35,7 +36,7 @@ function getFiles(dirPath) { return fs.existsSync(dirPath) ? readdir(dirPath) : []; } -async function saveArtifacts(s3Folder) { +async function saveArtifacts() { if (!DETOX_AWS_S3_BUCKET || !DETOX_AWS_ACCESS_KEY_ID || !DETOX_AWS_SECRET_ACCESS_KEY) { console.log('No AWS credentials found. Test artifacts not uploaded to S3.'); @@ -50,7 +51,7 @@ async function saveArtifacts(s3Folder) { filesToUpload, 10, async.asyncify(async (file) => { - const Key = file.replace(uploadPath, s3Folder); + const Key = file.replace(uploadPath, REPORT_PATH); const contentType = mime.lookup(file); const charset = mime.charset(contentType); @@ -76,7 +77,7 @@ async function saveArtifacts(s3Folder) { return reject(new Error(err)); } - const reportLink = `https://${DETOX_AWS_S3_BUCKET}.s3.amazonaws.com/${s3Folder}/jest-stare/${platform}-report.html`; + const reportLink = `https://${DETOX_AWS_S3_BUCKET}.s3.amazonaws.com/${REPORT_PATH}/jest-stare/${platform}-report.html`; resolve({ success: true, reportLink }); }, ); diff --git a/detox/utils/report.js b/detox/utils/report.js index 47bd97a14c0..4f8ef989e08 100644 --- a/detox/utils/report.js +++ b/detox/utils/report.js @@ -317,6 +317,7 @@ function generateTitle() { RELEASE_DATE, RELEASE_VERSION, TYPE, + REPORT_PATH } = process.env; const platform = IOS === 'true' ? 'iOS' : 'Android'; @@ -324,7 +325,7 @@ function generateTitle() { const appExtension = IOS === 'true' ? 'ipa' : 'apk'; const appFileName = `Mattermost_Beta.${appExtension}`; const appBuildType = 'mattermost-mobile-beta'; - const s3Folder = `${platform.toLocaleLowerCase()}/${BUILD_ID}-${COMMIT_HASH}-${BRANCH}`.replace(/\./g, '-'); + const s3Folder = `${platform.toLocaleLowerCase()}/${REPORT_PATH}`; const appFilePath = IOS === 'true' ? 'Mattermost-simulator-x86_64.app.zip' : 'android/app/build/outputs/apk/release/app-release.apk'; let buildLink = ''; let releaseDate = '';