From 53e05460b36ad9139b316f7a1db30fbc3d694c08 Mon Sep 17 00:00:00 2001 From: Jordan Porter Date: Tue, 17 Sep 2024 15:35:26 -0600 Subject: [PATCH 1/3] automate uploading webview assets to lt --- .github/actions/post-release-updates/index.js | 7 ++++ .github/workflows/post-release-updates.yml | 3 ++ package.json | 1 + tools/lambda-test/upload-webview-assets.mjs | 40 +++++++++++++++++++ tools/lambda-test/webview-asset-ids.js | 1 + tools/wdio/config/lambdatest.conf.mjs | 5 ++- 6 files changed, 55 insertions(+), 2 deletions(-) create mode 100644 tools/lambda-test/upload-webview-assets.mjs create mode 100644 tools/lambda-test/webview-asset-ids.js diff --git a/.github/actions/post-release-updates/index.js b/.github/actions/post-release-updates/index.js index ac4652933..e7c84a022 100644 --- a/.github/actions/post-release-updates/index.js +++ b/.github/actions/post-release-updates/index.js @@ -82,6 +82,13 @@ await spawnAsync( DEFAULT_SPAWN_OPTIONS ) +console.log('Updating LambdaTest browsers lists') +await spawnAsync( + `npm${os.platform() === 'win32' ? '.cmd' : ''}`, + ['run', 'lt:upload-webview-assets'], + DEFAULT_SPAWN_OPTIONS +) + console.log('Updating third-party licenses') await spawnAsync( `npm${os.platform() === 'win32' ? '.cmd' : ''}`, diff --git a/.github/workflows/post-release-updates.yml b/.github/workflows/post-release-updates.yml index 02dc6d9a3..2970cb2e1 100644 --- a/.github/workflows/post-release-updates.yml +++ b/.github/workflows/post-release-updates.yml @@ -12,6 +12,9 @@ jobs: post-release-updates: runs-on: ubuntu-latest timeout-minutes: 30 + env: + LAMBDA_USERNAME: ${{ secrets.LAMBDA_USERNAME }} + LAMBDA_ACCESS_KEY: ${{ secrets.LAMBDA_ACCESS_KEY }} defaults: run: shell: bash diff --git a/package.json b/package.json index 011704712..592b46750 100644 --- a/package.json +++ b/package.json @@ -174,6 +174,7 @@ "cdn:watch": "jung -r ./src -F '.*\\.test\\.js' --run -- npm run cdn:build:local", "test-server": "node ./tools/wdio/bin/server", "lt:update-browsers": "node ./tools/browsers-lists/lt-update-supported.mjs", + "lt:upload-webview-assets": "node ./tools/lambda-test/upload-webview-assets.mjs", "tools:test-builds": "npm --prefix ./tools/test-builds run build-all", "third-party-updates": "oss third-party manifest --includeOptDeps && oss third-party notices --includeOptDeps", "prepare": "husky install", diff --git a/tools/lambda-test/upload-webview-assets.mjs b/tools/lambda-test/upload-webview-assets.mjs new file mode 100644 index 000000000..3f73ed401 --- /dev/null +++ b/tools/lambda-test/upload-webview-assets.mjs @@ -0,0 +1,40 @@ +import process from 'process' +import path from 'path' +import url from 'url' +import fs from 'fs' + +import { exec } from 'child_process' + +const __dirname = path.dirname(url.fileURLToPath(import.meta.url)) +const targetDir = path.resolve(__dirname, '../../tests/webview-specs/assets') +const outputDir = path.resolve(__dirname, '../../tools/lambda-test') + +const androidUpload = `curl -u "${process.env.LT_USERNAME}:${process.env.LT_ACCESS_KEY}" --location --request POST 'https://manual-api.lambdatest.com/app/upload/virtualDevice' --form 'name="app-debug.apk"' --form 'appFile=@"${targetDir}/app-debug.apk"'` +const iosUpload = `curl -u "${process.env.LT_USERNAME}:${process.env.LT_ACCESS_KEY}" --location --request POST 'https://manual-api.lambdatest.com/app/upload/virtualDevice' --form 'name="NRTestApp.apk"' --form 'appFile=@"${targetDir}/NRTestApp.zip"'` + +let androidID = null; let iosID = null + +exec(androidUpload, (error, stdout, stderr) => { + if (error) return errorResult(error) + androidID = JSON.parse(stdout).app_url + checkDone() +}) + +exec(iosUpload, (error, stdout, stderr) => { + if (error) return errorResult(error) + iosID = JSON.parse(stdout).app_url + checkDone() +}) + +function checkDone () { + if (androidID && iosID) { + console.log('uploaded...', androidID, iosID) + fs.writeFileSync(`${outputDir}/webview-asset-ids.js`, `export default { androidID: '${androidID}', iosID: '${iosID}' }\n`) + process.exit() + } +} + +function errorResult (errorMessage) { + console.log(errorMessage) + process.exit(1) +} diff --git a/tools/lambda-test/webview-asset-ids.js b/tools/lambda-test/webview-asset-ids.js new file mode 100644 index 000000000..211a4ffef --- /dev/null +++ b/tools/lambda-test/webview-asset-ids.js @@ -0,0 +1 @@ +export default { androidID: 'lt://APP10160541191726608892300952', iosID: 'lt://APP10160541191726608891369860' } diff --git a/tools/wdio/config/lambdatest.conf.mjs b/tools/wdio/config/lambdatest.conf.mjs index 86c86555f..c9b641c5a 100644 --- a/tools/wdio/config/lambdatest.conf.mjs +++ b/tools/wdio/config/lambdatest.conf.mjs @@ -5,6 +5,7 @@ import child_process from 'node:child_process' import browsersList from '../../browsers-lists/lt-browsers-list.mjs' import args from '../args.mjs' import { getBrowserName } from '../../browsers-lists/utils.mjs' +import webviewAssetIds from '../../lambda-test/webview-asset-ids' const require = module.createRequire(import.meta.url) const supportedDesktop = require('../../browsers-lists/lt-desktop-supported.json') @@ -64,10 +65,10 @@ function lambdaTestCapabilities () { // Important: ensure the uploaded apps are set to "team" visibility. if (parsedBrowserName === 'android') { capabilities['appium:platformName'] = 'android' - capabilities['LT:Options'].app = 'lt://APP10160352241718733717577609' + capabilities['LT:Options'].app = webviewAssetIds.androidID } else /* === 'ios' */ { capabilities['appium:platformName'] = 'ios' - capabilities['LT:Options'].app = 'lt://APP10160352241718734672953481' + capabilities['LT:Options'].app = webviewAssetIds.iosID } } else { capabilities['appium:platformName'] = testBrowser.device_name From 2753041a01e6298d90c4e6c0dd53a55f0560bd4e Mon Sep 17 00:00:00 2001 From: Jordan Porter Date: Tue, 17 Sep 2024 15:39:15 -0600 Subject: [PATCH 2/3] set visibility to team --- tools/lambda-test/upload-webview-assets.mjs | 4 ++-- tools/lambda-test/webview-asset-ids.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/lambda-test/upload-webview-assets.mjs b/tools/lambda-test/upload-webview-assets.mjs index 3f73ed401..12ad5d71c 100644 --- a/tools/lambda-test/upload-webview-assets.mjs +++ b/tools/lambda-test/upload-webview-assets.mjs @@ -9,8 +9,8 @@ const __dirname = path.dirname(url.fileURLToPath(import.meta.url)) const targetDir = path.resolve(__dirname, '../../tests/webview-specs/assets') const outputDir = path.resolve(__dirname, '../../tools/lambda-test') -const androidUpload = `curl -u "${process.env.LT_USERNAME}:${process.env.LT_ACCESS_KEY}" --location --request POST 'https://manual-api.lambdatest.com/app/upload/virtualDevice' --form 'name="app-debug.apk"' --form 'appFile=@"${targetDir}/app-debug.apk"'` -const iosUpload = `curl -u "${process.env.LT_USERNAME}:${process.env.LT_ACCESS_KEY}" --location --request POST 'https://manual-api.lambdatest.com/app/upload/virtualDevice' --form 'name="NRTestApp.apk"' --form 'appFile=@"${targetDir}/NRTestApp.zip"'` +const androidUpload = `curl -u "${process.env.LT_USERNAME}:${process.env.LT_ACCESS_KEY}" --location --request POST 'https://manual-api.lambdatest.com/app/upload/virtualDevice' --form "visibilty=team" --form 'name="app-debug.apk"' --form 'appFile=@"${targetDir}/app-debug.apk"'` +const iosUpload = `curl -u "${process.env.LT_USERNAME}:${process.env.LT_ACCESS_KEY}" --location --request POST 'https://manual-api.lambdatest.com/app/upload/virtualDevice' --form "visibilty=team" --form 'name="NRTestApp.apk"' --form 'appFile=@"${targetDir}/NRTestApp.zip"'` let androidID = null; let iosID = null diff --git a/tools/lambda-test/webview-asset-ids.js b/tools/lambda-test/webview-asset-ids.js index 211a4ffef..221492083 100644 --- a/tools/lambda-test/webview-asset-ids.js +++ b/tools/lambda-test/webview-asset-ids.js @@ -1 +1 @@ -export default { androidID: 'lt://APP10160541191726608892300952', iosID: 'lt://APP10160541191726608891369860' } +export default { androidID: 'lt://APP1016027451726609146609972', iosID: 'lt://APP1016038711726609145139702' } From 9d5f4d5020b6414654be2b8087897efa4fe68eb2 Mon Sep 17 00:00:00 2001 From: Jordan Porter Date: Tue, 17 Sep 2024 15:43:32 -0600 Subject: [PATCH 3/3] update commit list --- .github/actions/post-release-updates/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/actions/post-release-updates/index.js b/.github/actions/post-release-updates/index.js index e7c84a022..419948bcd 100644 --- a/.github/actions/post-release-updates/index.js +++ b/.github/actions/post-release-updates/index.js @@ -118,7 +118,8 @@ if (args.openPullRequest) { 'tools/browsers-lists/*.json', 'third_party_manifest.json', 'THIRD_PARTY_NOTICES.md', - 'tools/test-builds/**/package.json' + 'tools/test-builds/**/package.json', + 'tools/webview-asset-ids.js' ], COMMIT_MESSAGE, true