diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7d58ebe85..d4e67e782 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -101,13 +101,13 @@ jobs: - name: "Az CLI login" uses: azure/login@v1 with: - client-id: ${{ secrets.AZURE_CLIENT_ID }} - tenant-id: ${{ secrets.AZURE_TENANT_ID }} - subscription-id: ${{ secrets.PREVIEW_SUBSCRIPTION_ID }} + client-id: ${{ secrets.E2ETESTS_CLIENT_ID }} + tenant-id: ${{ secrets.E2ETESTS_TENANT_ID }} + subscription-id: ${{ secrets.E2ETESTS_SUBSCRIPTION_ID }} - name: Upload build to preview blob storage - run: az storage blob upload-batch -d '$web' -s 'dist' --account-name ${{ secrets.PREVIEW_STORAGE_ACCOUNT_NAME }} --destination-path "${{github.event.pull_request.head.sha || github.sha}}" --auth-mode login --overwrite true + run: az storage blob upload-batch -d '$web' -s 'dist' --account-name ${{ secrets.E2ETESTS_STORAGEACCOUNT_NAME }} --destination-path "${{github.event.pull_request.head.sha || github.sha}}" --auth-mode login --overwrite true - name: Upload preview config to blob storage - run: az storage blob upload -c '$web' -f ./preview/config.json --account-name ${{ secrets.PREVIEW_STORAGE_ACCOUNT_NAME }} --name "${{github.event.pull_request.head.sha || github.sha}}/config.json" --auth-mode login --overwrite true + run: az storage blob upload -c '$web' -f ./preview/config.json --account-name ${{ secrets.E2ETESTS_STORAGEACCOUNT_NAME }} --name "${{github.event.pull_request.head.sha || github.sha}}/config.json" --auth-mode login --overwrite true nuget: name: Publish Nuget if: github.ref == 'refs/heads/master' || contains(github.ref, 'hotfix/') || contains(github.ref, 'release/') @@ -162,7 +162,10 @@ jobs: runs-on: ubuntu-latest env: NODE_TLS_REJECT_UNAUTHORIZED: 0 - AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }} + AZURE_SUBSCRIPTION_ID: ${{ secrets.E2ETESTS_SUBSCRIPTION_ID }} + AZURE_TENANT_ID: ${{ secrets.E2ETESTS_TENANT_ID }} + DE_ACCOUNT_PREFIX: ${{ secrets.E2ETESTS_ACCOUNT_PREFIX }} + DE_TEST_RESOURCE_GROUP: ${{ secrets.E2ETESTS_RESOURCEGROUP_NAME }} strategy: fail-fast: false matrix: @@ -179,120 +182,47 @@ jobs: - name: "Az CLI login" uses: Azure/login@v2 with: - client-id: ${{ secrets.E2E_TESTS_CLIENT_ID }} - tenant-id: ${{ secrets.AZURE_TENANT_ID }} - subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} + client-id: ${{ secrets.E2ETESTS_CLIENT_ID }} + tenant-id: ${{ secrets.E2ETESTS_TENANT_ID }} + subscription-id: ${{ secrets.E2ETESTS_SUBSCRIPTION_ID }} # We can't use MSAL within playwright so we acquire tokens prior to running the tests - name: "Acquire RBAC tokens for test accounts" uses: azure/cli@v2 + env: + DE_ACCOUNT_PREFIX: ${{ secrets.E2ETESTS_ACCOUNT_PREFIX }} + DE_TEST_RESOURCE_GROUP: ${{ secrets.E2ETESTS_RESOURCEGROUP_NAME }} with: azcliversion: latest inlineScript: | SHARD_INDEX=${{ matrix.shardIndex }} echo PLAYWRIGHT_SHARD_INDEX=$SHARD_INDEX >> $GITHUB_ENV - NOSQL_TESTACCOUNT_1_TOKEN=$(az account get-access-token --scope "https://github-e2etests-sql-1.documents.azure.com/.default" -o tsv --query accessToken) - echo "::add-mask::$NOSQL_TESTACCOUNT_1_TOKEN" - echo NOSQL_TESTACCOUNT_1_TOKEN=$NOSQL_TESTACCOUNT_1_TOKEN >> $GITHUB_ENV - - NOSQL_TESTACCOUNT_2_TOKEN=$(az account get-access-token --scope "https://github-e2etests-sql-2.documents.azure.com/.default" -o tsv --query accessToken) - echo "::add-mask::$NOSQL_TESTACCOUNT_2_TOKEN" - echo NOSQL_TESTACCOUNT_2_TOKEN=$NOSQL_TESTACCOUNT_2_TOKEN >> $GITHUB_ENV - - NOSQL_TESTACCOUNT_3_TOKEN=$(az account get-access-token --scope "https://github-e2etests-sql-3.documents.azure.com/.default" -o tsv --query accessToken) - echo "::add-mask::$NOSQL_TESTACCOUNT_3_TOKEN" - echo NOSQL_TESTACCOUNT_3_TOKEN=$NOSQL_TESTACCOUNT_3_TOKEN >> $GITHUB_ENV - - NOSQL_TESTACCOUNT_4_TOKEN=$(az account get-access-token --scope "https://github-e2etests-sql-4.documents.azure.com/.default" -o tsv --query accessToken) - echo "::add-mask::$NOSQL_TESTACCOUNT_4_TOKEN" - echo NOSQL_TESTACCOUNT_4_TOKEN=$NOSQL_TESTACCOUNT_4_TOKEN >> $GITHUB_ENV - - NOSQL_TESTACCOUNT_5_TOKEN=$(az account get-access-token --scope "https://github-e2etests-sql-5.documents.azure.com/.default" -o tsv --query accessToken) - echo "::add-mask::$NOSQL_TESTACCOUNT_5_TOKEN" - echo NOSQL_TESTACCOUNT_5_TOKEN=$NOSQL_TESTACCOUNT_5_TOKEN >> $GITHUB_ENV - - NOSQL_TESTACCOUNT_6_TOKEN=$(az account get-access-token --scope "https://github-e2etests-sql-6.documents.azure.com/.default" -o tsv --query accessToken) - echo "::add-mask::$NOSQL_TESTACCOUNT_6_TOKEN" - echo NOSQL_TESTACCOUNT_6_TOKEN=$NOSQL_TESTACCOUNT_6_TOKEN >> $GITHUB_ENV - - NOSQL_TESTACCOUNT_7_TOKEN=$(az account get-access-token --scope "https://github-e2etests-sql-7.documents.azure.com/.default" -o tsv --query accessToken) - echo "::add-mask::$NOSQL_TESTACCOUNT_7_TOKEN" - echo NOSQL_TESTACCOUNT_7_TOKEN=$NOSQL_TESTACCOUNT_7_TOKEN >> $GITHUB_ENV - - NOSQL_TESTACCOUNT_8_TOKEN=$(az account get-access-token --scope "https://github-e2etests-sql-8.documents.azure.com/.default" -o tsv --query accessToken) - echo "::add-mask::$NOSQL_TESTACCOUNT_8_TOKEN" - echo NOSQL_TESTACCOUNT_8_TOKEN=$NOSQL_TESTACCOUNT_8_TOKEN >> $GITHUB_ENV - - NOSQL_TESTACCOUNT_9_TOKEN=$(az account get-access-token --scope "https://github-e2etests-sql-9.documents.azure.com/.default" -o tsv --query accessToken) - echo "::add-mask::$NOSQL_TESTACCOUNT_9_TOKEN" - echo NOSQL_TESTACCOUNT_9_TOKEN=$NOSQL_TESTACCOUNT_9_TOKEN >> $GITHUB_ENV - - NOSQL_TESTACCOUNT_10_TOKEN=$(az account get-access-token --scope "https://github-e2etests-sql-10.documents.azure.com/.default" -o tsv --query accessToken) - echo "::add-mask::$NOSQL_TESTACCOUNT_10_TOKEN" - echo NOSQL_TESTACCOUNT_10_TOKEN=$NOSQL_TESTACCOUNT_10_TOKEN >> $GITHUB_ENV - - NOSQL_TESTACCOUNT_11_TOKEN=$(az account get-access-token --scope "https://github-e2etests-sql-11.documents.azure.com/.default" -o tsv --query accessToken) - echo "::add-mask::$NOSQL_TESTACCOUNT_11_TOKEN" - echo NOSQL_TESTACCOUNT_11_TOKEN=$NOSQL_TESTACCOUNT_11_TOKEN >> $GITHUB_ENV - - NOSQL_TESTACCOUNT_12_TOKEN=$(az account get-access-token --scope "https://github-e2etests-sql-12.documents.azure.com/.default" -o tsv --query accessToken) - echo "::add-mask::$NOSQL_TESTACCOUNT_12_TOKEN" - echo NOSQL_TESTACCOUNT_12_TOKEN=$NOSQL_TESTACCOUNT_12_TOKEN >> $GITHUB_ENV - - NOSQL_TESTACCOUNT_13_TOKEN=$(az account get-access-token --scope "https://github-e2etests-sql-13.documents.azure.com/.default" -o tsv --query accessToken) - echo "::add-mask::$NOSQL_TESTACCOUNT_13_TOKEN" - echo NOSQL_TESTACCOUNT_13_TOKEN=$NOSQL_TESTACCOUNT_13_TOKEN >> $GITHUB_ENV - - NOSQL_TESTACCOUNT_14_TOKEN=$(az account get-access-token --scope "https://github-e2etests-sql-14.documents.azure.com/.default" -o tsv --query accessToken) - echo "::add-mask::$NOSQL_TESTACCOUNT_14_TOKEN" - echo NOSQL_TESTACCOUNT_14_TOKEN=$NOSQL_TESTACCOUNT_14_TOKEN >> $GITHUB_ENV - - NOSQL_TESTACCOUNT_15_TOKEN=$(az account get-access-token --scope "https://github-e2etests-sql-15.documents.azure.com/.default" -o tsv --query accessToken) - echo "::add-mask::$NOSQL_TESTACCOUNT_15_TOKEN" - echo NOSQL_TESTACCOUNT_15_TOKEN=$NOSQL_TESTACCOUNT_15_TOKEN >> $GITHUB_ENV - - NOSQL_TESTACCOUNT_16_TOKEN=$(az account get-access-token --scope "https://github-e2etests-sql-16.documents.azure.com/.default" -o tsv --query accessToken) - echo "::add-mask::$NOSQL_TESTACCOUNT_16_TOKEN" - echo NOSQL_TESTACCOUNT_16_TOKEN=$NOSQL_TESTACCOUNT_16_TOKEN >> $GITHUB_ENV - - NOSQL_TESTACCOUNT_17_TOKEN=$(az account get-access-token --scope "https://github-e2etests-sql-17.documents.azure.com/.default" -o tsv --query accessToken) - echo "::add-mask::$NOSQL_TESTACCOUNT_17_TOKEN" - echo NOSQL_TESTACCOUNT_17_TOKEN=$NOSQL_TESTACCOUNT_17_TOKEN >> $GITHUB_ENV - - NOSQL_TESTACCOUNT_18_TOKEN=$(az account get-access-token --scope "https://github-e2etests-sql-18.documents.azure.com/.default" -o tsv --query accessToken) - echo "::add-mask::$NOSQL_TESTACCOUNT_18_TOKEN" - echo NOSQL_TESTACCOUNT_18_TOKEN=$NOSQL_TESTACCOUNT_18_TOKEN >> $GITHUB_ENV - - NOSQL_TESTACCOUNT_19_TOKEN=$(az account get-access-token --scope "https://github-e2etests-sql-19.documents.azure.com/.default" -o tsv --query accessToken) - echo "::add-mask::$NOSQL_TESTACCOUNT_19_TOKEN" - echo NOSQL_TESTACCOUNT_19_TOKEN=$NOSQL_TESTACCOUNT_19_TOKEN >> $GITHUB_ENV - - NOSQL_TESTACCOUNT_20_TOKEN=$(az account get-access-token --scope "https://github-e2etests-sql-20.documents.azure.com/.default" -o tsv --query accessToken) - echo "::add-mask::$NOSQL_TESTACCOUNT_20_TOKEN" - echo NOSQL_TESTACCOUNT_20_TOKEN=$NOSQL_TESTACCOUNT_20_TOKEN >> $GITHUB_ENV - - NOSQL_READONLY_TESTACCOUNT_TOKEN=$(az account get-access-token --scope "https://github-e2etests-sql-readonly.documents.azure.com/.default" -o tsv --query accessToken) + NOSQL_TESTACCOUNT=${DE_ACCOUNT_PREFIX}-de-test-sql-${SHARD_INDEX}.documents.azure.com + NOSQL_TESTACCOUNT_TOKEN=$(az account get-access-token --scope "https://$NOSQL_TESTACCOUNT/.default" -o tsv --query accessToken) + echo "::add-mask::$NOSQL_TESTACCOUNT_TOKEN" + echo NOSQL_TESTACCOUNT_TOKEN=$NOSQL_TESTACCOUNT_TOKEN >> $GITHUB_ENV + NOSQL_READONLY_TESTACCOUNT_TOKEN=$(az account get-access-token --scope "https://$DE_ACCOUNT_PREFIX-de-test-sql-readonly.documents.azure.com/.default" -o tsv --query accessToken) echo "::add-mask::$NOSQL_READONLY_TESTACCOUNT_TOKEN" echo NOSQL_READONLY_TESTACCOUNT_TOKEN=$NOSQL_READONLY_TESTACCOUNT_TOKEN >> $GITHUB_ENV - NOSQL_CONTAINERCOPY_TESTACCOUNT_TOKEN=$(az account get-access-token --scope "https://github-e2etests-sql-containercopyonly.documents.azure.com/.default" -o tsv --query accessToken) + NOSQL_CONTAINERCOPY_TESTACCOUNT_TOKEN=$(az account get-access-token --scope "https://${DE_ACCOUNT_PREFIX}-de-test-sql-containercopy.documents.azure.com/.default" -o tsv --query accessToken) echo "::add-mask::$NOSQL_CONTAINERCOPY_TESTACCOUNT_TOKEN" echo NOSQL_CONTAINERCOPY_TESTACCOUNT_TOKEN=$NOSQL_CONTAINERCOPY_TESTACCOUNT_TOKEN >> $GITHUB_ENV - TABLE_TESTACCOUNT_TOKEN=$(az account get-access-token --scope "https://github-e2etests-tables.documents.azure.com/.default" -o tsv --query accessToken) + TABLE_TESTACCOUNT_TOKEN=$(az account get-access-token --scope "https://${DE_ACCOUNT_PREFIX}-de-test-table-1.documents.azure.com/.default" -o tsv --query accessToken) echo "::add-mask::$TABLE_TESTACCOUNT_TOKEN" echo TABLE_TESTACCOUNT_TOKEN=$TABLE_TESTACCOUNT_TOKEN >> $GITHUB_ENV - GREMLIN_TESTACCOUNT_TOKEN=$(az account get-access-token --scope "https://github-e2etests-gremlin.documents.azure.com/.default" -o tsv --query accessToken) + GREMLIN_TESTACCOUNT_TOKEN=$(az account get-access-token --scope "https://${DE_ACCOUNT_PREFIX}-de-test-gremlin-1.documents.azure.com/.default" -o tsv --query accessToken) echo "::add-mask::$GREMLIN_TESTACCOUNT_TOKEN" echo GREMLIN_TESTACCOUNT_TOKEN=$GREMLIN_TESTACCOUNT_TOKEN >> $GITHUB_ENV - CASSANDRA_TESTACCOUNT_TOKEN=$(az account get-access-token --scope "https://github-e2etests-cassandra.documents.azure.com/.default" -o tsv --query accessToken) + CASSANDRA_TESTACCOUNT_TOKEN=$(az account get-access-token --scope "https://${DE_ACCOUNT_PREFIX}-de-test-cassandra-1.documents.azure.com/.default" -o tsv --query accessToken) echo "::add-mask::$CASSANDRA_TESTACCOUNT_TOKEN" echo CASSANDRA_TESTACCOUNT_TOKEN=$CASSANDRA_TESTACCOUNT_TOKEN >> $GITHUB_ENV - MONGO_TESTACCOUNT_TOKEN=$(az account get-access-token --scope "https://github-e2etests-mongo.documents.azure.com/.default" -o tsv --query accessToken) + MONGO_TESTACCOUNT_TOKEN=$(az account get-access-token --scope "https://${DE_ACCOUNT_PREFIX}-de-test-mongo-1.documents.azure.com/.default" -o tsv --query accessToken) echo "::add-mask::$MONGO_TESTACCOUNT_TOKEN" echo MONGO_TESTACCOUNT_TOKEN=$MONGO_TESTACCOUNT_TOKEN >> $GITHUB_ENV - MONGO32_TESTACCOUNT_TOKEN=$(az account get-access-token --scope "https://github-e2etests-mongo32.documents.azure.com/.default" -o tsv --query accessToken) + MONGO32_TESTACCOUNT_TOKEN=$(az account get-access-token --scope "https://${DE_ACCOUNT_PREFIX}-de-test-mongo32-1.documents.azure.com/.default" -o tsv --query accessToken) echo "::add-mask::$MONGO32_TESTACCOUNT_TOKEN" echo MONGO32_TESTACCOUNT_TOKEN=$MONGO32_TESTACCOUNT_TOKEN >> $GITHUB_ENV - MONGO_READONLY_TESTACCOUNT_TOKEN=$(az account get-access-token --scope "https://github-e2etests-mongo-readonly.documents.azure.com/.default" -o tsv --query accessToken) + MONGO_READONLY_TESTACCOUNT_TOKEN=$(az account get-access-token --scope "https://${DE_ACCOUNT_PREFIX}-de-test-mongo-readonly.documents.azure.com/.default" -o tsv --query accessToken) echo "::add-mask::$MONGO_READONLY_TESTACCOUNT_TOKEN" echo MONGO_READONLY_TESTACCOUNT_TOKEN=$MONGO_READONLY_TESTACCOUNT_TOKEN >> $GITHUB_ENV - name: List test files for shard ${{ matrix['shardIndex'] }} of ${{ matrix['shardTotal']}} @@ -303,9 +233,9 @@ jobs: if: ${{ !cancelled() }} uses: Azure/login@v2 with: - client-id: ${{ secrets.E2E_TESTS_CLIENT_ID }} - tenant-id: ${{ secrets.AZURE_TENANT_ID }} - subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} + client-id: ${{ secrets.E2ETESTS_CLIENT_ID }} + tenant-id: ${{ secrets.E2ETESTS_TENANT_ID }} + subscription-id: ${{ secrets.E2ETESTS_SUBSCRIPTION_ID }} - name: Upload shard blob-report to Azure Storage if: ${{ !cancelled() }} env: @@ -313,7 +243,7 @@ jobs: SHARD: ${{ matrix.shardIndex }} run: | az storage blob upload-batch \ - --account-name ${{ secrets.PREVIEW_STORAGE_ACCOUNT_NAME }} \ + --account-name ${{ secrets.E2ETESTS_STORAGEACCOUNT_NAME }} \ --auth-mode login \ -d playwright-reports \ -s blob-report \ @@ -342,9 +272,9 @@ jobs: - name: "Az CLI login" uses: Azure/login@v2 with: - client-id: ${{ secrets.AZURE_CLIENT_ID }} - tenant-id: ${{ secrets.AZURE_TENANT_ID }} - subscription-id: ${{ secrets.PREVIEW_SUBSCRIPTION_ID }} + client-id: ${{ secrets.E2ETESTS_CLIENT_ID }} + tenant-id: ${{ secrets.E2ETESTS_TENANT_ID }} + subscription-id: ${{ secrets.E2ETESTS_SUBSCRIPTION_ID }} - name: Download all shard reports from Azure Storage env: @@ -352,7 +282,7 @@ jobs: run: | mkdir -p all-blob-reports az storage blob download-batch \ - --account-name ${{ secrets.PREVIEW_STORAGE_ACCOUNT_NAME }} \ + --account-name ${{ secrets.E2ETESTS_STORAGEACCOUNT_NAME }} \ --auth-mode login \ -s playwright-reports \ --pattern "${KEY}/shards/*" \ @@ -375,7 +305,7 @@ jobs: KEY: ${{ github.run_id }}-${{ github.run_attempt }} run: | az storage blob upload \ - --account-name ${{ secrets.PREVIEW_STORAGE_ACCOUNT_NAME }} \ + --account-name ${{ secrets.E2ETESTS_STORAGEACCOUNT_NAME }} \ --auth-mode login \ -c playwright-reports \ -n "${KEY}/report.zip" \ @@ -388,7 +318,7 @@ jobs: KEY: ${{ github.run_id }}-${{ github.run_attempt }} run: | az storage blob delete-batch \ - --account-name ${{ secrets.PREVIEW_STORAGE_ACCOUNT_NAME }} \ + --account-name ${{ secrets.E2ETESTS_STORAGEACCOUNT_NAME }} \ --auth-mode login \ -s playwright-reports \ --pattern "${KEY}/shards/*" @@ -398,7 +328,7 @@ jobs: env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} PR: ${{ github.event.pull_request.number }} - SA_ID: /subscriptions/${{ secrets.PREVIEW_SUBSCRIPTION_ID }}/resourceGroups/dataexplorer-preview/providers/Microsoft.Storage/storageAccounts/dataexplorerpreview + SA_ID: /subscriptions/${{ secrets.E2ETESTS_SUBSCRIPTION_ID }}/resourceGroups/${{ secrets.E2ETESTS_RESOURCEGROUP_NAME }}/providers/Microsoft.Storage/storageAccounts/${{ secrets.E2ETESTS_STORAGEACCOUNT_NAME }} KEY: ${{ github.run_id }}-${{ github.run_attempt }} RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} run: | diff --git a/.github/workflows/cleanup.yml b/.github/workflows/cleanup.yml index 7dfa8a996..b2d3471af 100644 --- a/.github/workflows/cleanup.yml +++ b/.github/workflows/cleanup.yml @@ -20,16 +20,18 @@ jobs: name: "Cleanup Test Database Accounts" runs-on: ubuntu-latest env: - AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }} + AZURE_SUBSCRIPTION_ID: ${{ secrets.E2ETESTS_SUBSCRIPTION_ID }} steps: - uses: actions/checkout@v4 + env: + E2ETESTS_RESOURCEGROUP_NAME : ${{ secrets.E2ETESTS_RESOURCEGROUP_NAME }} - name: "Az CLI login" uses: azure/login@v2 with: - client-id: ${{ secrets.E2E_TESTS_CLIENT_ID }} - tenant-id: ${{ secrets.AZURE_TENANT_ID }} - subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} + client-id: ${{ secrets.E2ETESTS_CLIENT_ID }} + tenant-id: ${{ secrets.E2ETESTS_TENANT_ID }} + subscription-id: ${{ secrets.E2ETESTS_SUBSCRIPTION_ID }} - name: Use Node.js 20.x uses: actions/setup-node@v4 diff --git a/preview/index.js b/preview/index.js index ccc762ccc..be44c63ed 100644 --- a/preview/index.js +++ b/preview/index.js @@ -5,7 +5,7 @@ const fetch = require("node-fetch"); const backendEndpoint = "https://cdb-ms-mpac-pbe.cosmos.azure.com"; const previewSiteEndpoint = "https://dataexplorer-preview.azurewebsites.net"; -const previewStorageWebsiteEndpoint = "https://dataexplorerpreview.z5.web.core.windows.net/"; +const previewStorageWebsiteEndpoint = "_REPLACE_STORAGE_WEBSITE_ENDPOINT_"; const githubApiUrl = "https://api.github.com/repos/Azure/cosmos-explorer"; const azurePortalMpacEndpoint = "https://ms.portal.azure.com/"; diff --git a/test/NoSqlTestSetup.ts b/test/NoSqlTestSetup.ts deleted file mode 100644 index ea457fd55..000000000 --- a/test/NoSqlTestSetup.ts +++ /dev/null @@ -1,71 +0,0 @@ -export function getNoSqlRbacToken(): string | undefined { - let nosqlRbacToken: string | undefined; - const shardIndex = process.env.PLAYWRIGHT_SHARD_INDEX ?? ""; - switch (parseInt(shardIndex)) { - case 1: - nosqlRbacToken = process.env.NOSQL_TESTACCOUNT_1_TOKEN; - break; - case 2: - nosqlRbacToken = process.env.NOSQL_TESTACCOUNT_2_TOKEN; - break; - case 3: - nosqlRbacToken = process.env.NOSQL_TESTACCOUNT_3_TOKEN; - break; - case 4: - nosqlRbacToken = process.env.NOSQL_TESTACCOUNT_4_TOKEN; - break; - case 5: - nosqlRbacToken = process.env.NOSQL_TESTACCOUNT_5_TOKEN; - break; - case 6: - nosqlRbacToken = process.env.NOSQL_TESTACCOUNT_6_TOKEN; - break; - case 7: - nosqlRbacToken = process.env.NOSQL_TESTACCOUNT_7_TOKEN; - break; - case 8: - nosqlRbacToken = process.env.NOSQL_TESTACCOUNT_8_TOKEN; - break; - case 9: - nosqlRbacToken = process.env.NOSQL_TESTACCOUNT_9_TOKEN; - break; - case 10: - nosqlRbacToken = process.env.NOSQL_TESTACCOUNT_10_TOKEN; - break; - case 11: - nosqlRbacToken = process.env.NOSQL_TESTACCOUNT_11_TOKEN; - break; - case 12: - nosqlRbacToken = process.env.NOSQL_TESTACCOUNT_12_TOKEN; - break; - case 13: - nosqlRbacToken = process.env.NOSQL_TESTACCOUNT_13_TOKEN; - break; - case 14: - nosqlRbacToken = process.env.NOSQL_TESTACCOUNT_14_TOKEN; - break; - case 15: - nosqlRbacToken = process.env.NOSQL_TESTACCOUNT_15_TOKEN; - break; - case 16: - nosqlRbacToken = process.env.NOSQL_TESTACCOUNT_16_TOKEN; - break; - case 17: - nosqlRbacToken = process.env.NOSQL_TESTACCOUNT_17_TOKEN; - break; - case 18: - nosqlRbacToken = process.env.NOSQL_TESTACCOUNT_18_TOKEN; - break; - case 19: - nosqlRbacToken = process.env.NOSQL_TESTACCOUNT_19_TOKEN; - break; - case 20: - nosqlRbacToken = process.env.NOSQL_TESTACCOUNT_20_TOKEN; - break; - } - - if (!nosqlRbacToken) { - console.warn(`No NoSQL RBAC token found for shard index ${shardIndex}`); - } - return nosqlRbacToken; -} diff --git a/test/fx.ts b/test/fx.ts index 26b2893bc..880388a33 100644 --- a/test/fx.ts +++ b/test/fx.ts @@ -1,7 +1,6 @@ import { DefaultAzureCredential } from "@azure/identity"; import { Frame, Locator, Page, expect } from "@playwright/test"; import crypto from "crypto"; -import { getNoSqlRbacToken } from "./NoSqlTestSetup"; import { TestContainerContext } from "./testData"; const RETRY_COUNT = 3; @@ -45,29 +44,34 @@ export enum TestAccount { } export function getDefaultAccountName(accountType: TestAccount): string { + const accountNamePrefix = process.env.DE_ACCOUNT_PREFIX; + if (!accountNamePrefix) { + throw new Error("DE_ACCOUNT_PREFIX is not set"); + } + switch (accountType) { case TestAccount.Tables: - return "github-e2etests-tables"; + return `${accountNamePrefix}-de-test-table-1`; case TestAccount.Cassandra: - return "github-e2etests-cassandra"; + return `${accountNamePrefix}-de-test-cassandra-1`; case TestAccount.Gremlin: - return "github-e2etests-gremlin"; + return `${accountNamePrefix}-de-test-gremlin-1`; case TestAccount.Mongo: - return "github-e2etests-mongo"; + return `${accountNamePrefix}-de-test-mongo-1`; case TestAccount.MongoReadonly: - return "github-e2etests-mongo-readonly"; + return `${accountNamePrefix}-de-test-mongo-readonly`; case TestAccount.Mongo32: - return "github-e2etests-mongo32"; + return `${accountNamePrefix}-de-test-mongo32-1`; case TestAccount.SQLReadOnly: - return "github-e2etests-sql-readonly"; + return `${accountNamePrefix}-de-test-sql-readonly`; case TestAccount.SQLContainerCopyOnly: - return "github-e2etests-sql-containercopyonly"; + return `${accountNamePrefix}-de-test-sql-containercopy`; case TestAccount.SQL: { const shardIndex = process.env.PLAYWRIGHT_SHARD_INDEX ?? ""; if (!shardIndex) { throw new Error("PLAYWRIGHT_SHARD_INDEX is not set"); } - return "github-e2etests-sql-" + shardIndex; + return `${accountNamePrefix}-de-test-sql-${shardIndex}`; } default: throw new Error(`No default account name defined for account type ${accountType}`); @@ -75,7 +79,7 @@ export function getDefaultAccountName(accountType: TestAccount): string { } export const resourceGroupName = process.env.DE_TEST_RESOURCE_GROUP ?? "de-e2e-tests"; -export const subscriptionId = process.env.DE_TEST_SUBSCRIPTION_ID ?? "69e02f2d-f059-4409-9eac-97e8a276ae2c"; +export const subscriptionId = process.env.DE_TEST_SUBSCRIPTION_ID ?? process.env.AZURE_SUBSCRIPTION_ID ?? ""; export const TEST_AUTOSCALE_THROUGHPUT_RU = 1000; export const TEST_MANUAL_THROUGHPUT_RU = 800; export const TEST_AUTOSCALE_MAX_THROUGHPUT_RU_2K = 2000; @@ -117,11 +121,16 @@ export async function getTestExplorerUrl(accountType: TestAccount, options?: Tes params.set("subscriptionId", subscriptionId); params.set("token", token); + const tenantId = process.env.AZURE_TENANT_ID; + if (tenantId) { + params.set("tenantId", tenantId); + } + // There seem to be occasional CORS issues with calling the copilot APIs (/api/tokens/sampledataconnection/v2, for example) // For now, since we don't test copilot, we can disable the copilot APIs by setting the feature flag to false. params.set("feature.enableCopilot", "false"); - const nosqlRbacToken = getNoSqlRbacToken(); + const nosqlRbacToken = process.env.NOSQL_TESTACCOUNT_TOKEN; const nosqlReadOnlyRbacToken = process.env.NOSQL_READONLY_TESTACCOUNT_TOKEN; const nosqlContainerCopyRbacToken = process.env.NOSQL_CONTAINERCOPY_TESTACCOUNT_TOKEN; diff --git a/test/mongo/pagination.spec.ts b/test/mongo/pagination.spec.ts index 548d49184..2717336a0 100644 --- a/test/mongo/pagination.spec.ts +++ b/test/mongo/pagination.spec.ts @@ -1,6 +1,6 @@ import { expect, test } from "@playwright/test"; import { setupCORSBypass } from "../CORSBypass"; -import { DataExplorer, QueryTab, TestAccount, CommandBarButton, Editor } from "../fx"; +import { CommandBarButton, DataExplorer, Editor, QueryTab, TestAccount } from "../fx"; import { serializeMongoToJson } from "../testData"; const databaseId = "test-e2etests-mongo-pagination"; diff --git a/test/sql/resourceToken.spec.ts b/test/sql/resourceToken.spec.ts index 5f8a700f8..157f773e9 100644 --- a/test/sql/resourceToken.spec.ts +++ b/test/sql/resourceToken.spec.ts @@ -11,10 +11,9 @@ import { resourceGroupName, subscriptionId, } from "../fx"; -import { getNoSqlRbacToken } from "../NoSqlTestSetup"; test("SQL account using Resource token", async ({ page }) => { - const nosqlAccountRbacToken = getNoSqlRbacToken() ?? ""; + const nosqlAccountRbacToken = process.env.NOSQL_TESTACCOUNT_TOKEN ?? ""; test.skip(nosqlAccountRbacToken.length > 0, "Resource tokens not supported when using data plane RBAC."); const credentials = getAzureCLICredentials(); diff --git a/test/testData.ts b/test/testData.ts index f9b493b70..e9ba759f1 100644 --- a/test/testData.ts +++ b/test/testData.ts @@ -18,7 +18,6 @@ import { subscriptionId, TestAccount, } from "./fx"; -import { getNoSqlRbacToken } from "./NoSqlTestSetup"; // In Node.js >= 19, globalThis.crypto is already available as a read-only getter. // Only assign the polyfill for older versions. @@ -135,7 +134,7 @@ async function createCosmosClientForSQLAccount( const rbacToken = accountType === TestAccount.SQL - ? getNoSqlRbacToken() + ? process.env.NOSQL_TESTACCOUNT_TOKEN : accountType === TestAccount.SQLContainerCopyOnly ? process.env.NOSQL_CONTAINERCOPY_TESTACCOUNT_TOKEN : ""; diff --git a/test/testExplorer/TestExplorer.ts b/test/testExplorer/TestExplorer.ts index ce65d5f86..28f763a27 100644 --- a/test/testExplorer/TestExplorer.ts +++ b/test/testExplorer/TestExplorer.ts @@ -3,7 +3,6 @@ import "../../less/hostedexplorer.less"; import { DataExplorerInputsFrame } from "../../src/Contracts/ViewModels"; import { updateUserContext } from "../../src/UserContext"; import { get, listKeys } from "../../src/Utils/arm/generatedClients/cosmos/databaseAccounts"; -import { getNoSqlRbacToken } from "../NoSqlTestSetup"; const urlSearchParams = new URLSearchParams(window.location.search); const resourceGroup = urlSearchParams.get("resourceGroup") || process.env.RESOURCE_GROUP || ""; @@ -16,7 +15,7 @@ const enablecontainercopy = urlSearchParams.get("enablecontainercopy"); const nosqlRbacToken = urlSearchParams.get("nosqlRbacToken") || - (enablecontainercopy ? process.env.NOSQL_CONTAINERCOPY_TESTACCOUNT_TOKEN : getNoSqlRbacToken()) || + (enablecontainercopy ? process.env.NOSQL_CONTAINERCOPY_TESTACCOUNT_TOKEN : process.env.NOSQL_TESTACCOUNT_TOKEN) || ""; const nosqlReadOnlyRbacToken = @@ -30,6 +29,7 @@ const mongoRbacToken = urlSearchParams.get("mongoRbacToken") || process.env.MONG const mongo32RbacToken = urlSearchParams.get("mongo32RbacToken") || process.env.MONGO32_TESTACCOUNT_TOKEN || ""; const mongoReadOnlyRbacToken = urlSearchParams.get("mongoReadOnlyRbacToken") || process.env.MONGO_READONLY_TESTACCOUNT_TOKEN || ""; +const tenantId = urlSearchParams.get("tenantId") || process.env.AZURE_TENANT_ID || ""; const initTestExplorer = async (): Promise => { updateUserContext({ @@ -51,7 +51,7 @@ const initTestExplorer = async (): Promise => { case "gremlin": rbacToken = gremlinRbacToken; break; - case "tables": + case "table": rbacToken = tableRbacToken; break; case "cassandra": @@ -90,6 +90,7 @@ const initTestExplorer = async (): Promise => { resourceGroup, authorizationToken: `Bearer ${authToken}`, aadToken: rbacToken, + tenantId, features: {}, containerCopyEnabled: enablecontainercopy === "true", hasWriteAccess: true, diff --git a/utils/cleanupDBs.js b/utils/cleanupDBs.js index 0c19973a3..233743c0f 100644 --- a/utils/cleanupDBs.js +++ b/utils/cleanupDBs.js @@ -3,7 +3,7 @@ const { CosmosDBManagementClient } = require("@azure/arm-cosmosdb"); const ms = require("ms"); const subscriptionId = process.env["AZURE_SUBSCRIPTION_ID"]; -const resourceGroupName = "de-e2e-tests"; +const resourceGroupName = process.env["E2ETESTS_RESOURCEGROUP_NAME"]; const thirtyMinutesAgo = new Date(Date.now() - 1000 * 60 * 30).getTime();