From f518684d897ba6d1122703497cdf0dea826bab9b Mon Sep 17 00:00:00 2001 From: Max Schmitt Date: Wed, 1 Nov 2023 17:28:30 +0100 Subject: [PATCH] chore: fix parameterized tests on the flakiness dashboard (#27900) Abstract issue: I have parameterised tests via the titlePath (describe) and they are not shown on the flakiness dashboard. Before #24486 only title() was shown, after #24486 titlePath() will be displayed, but we still did have the testId based on the test.title() and not test.titlePath(). This ends up that they will still be treated as a single spec. After this change they are not treated as a single spec anymore and treated as different ones: image Note: This is tested. Follow-up on https://github.com/microsoft/playwright/pull/24486. --- utils/flakiness-dashboard/README.md | 37 ++++++++++++++++--- utils/flakiness-dashboard/package-lock.json | 15 ++++---- utils/flakiness-dashboard/package.json | 4 +- .../processing/dashboard_compressed_v1.js | 2 +- utils/flakiness-dashboard/processing/index.js | 2 +- 5 files changed, 43 insertions(+), 17 deletions(-) diff --git a/utils/flakiness-dashboard/README.md b/utils/flakiness-dashboard/README.md index ea0e247fa2..0c3b84f527 100644 --- a/utils/flakiness-dashboard/README.md +++ b/utils/flakiness-dashboard/README.md @@ -1,10 +1,35 @@ # Flakiness Dashboard Backend This directory contains source code for the Azure function that we use to aggregate test reports. -The data is consumed by https://devops.aslushnikov.com/flakiness2.html +The data is consumed by https://devops.playwright.dev/flakiness.html -To publish function: -- install [Azure Functions Core Tools version 4.x.](https://docs.microsoft.com/en-us/azure/azure-functions/functions-run-local?tabs=v4%2Cmacos%2Ccsharp%2Cportal%2Cbash#v2). -- install Azure CLI && login via `az login` -- make sure to run `npm install` to populate `node_modules/` folder (this folder will be published as-is). -- run `func azure functionapp publish folio-flakiness-dashboard --javascript` +## Publish + +Azure Functions Core Tools is not available on macOS M1 yet, so we use GitHub Codespaces to publish the function. + +### Via GitHub Codespaces: + +- Install [Azure Functions Core Tools version 4](https://learn.microsoft.com/en-us/azure/azure-functions/functions-run-local?tabs=linux%2Cisolated-process%2Cnode-v4%2Cpython-v2%2Chttp-trigger%2Ccontainer-apps&pivots=programming-language-javascript): + ``` + curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg + mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg + sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-$(lsb_release -cs)-prod $(lsb_release -cs) main" > /etc/apt/sources.list.d/dotnetdev.list' + apt-get update && apt-get install azure-functions-core-tools-4 + ``` +- Install Azure CLI: + ```bash + curl -sL https://aka.ms/InstallAzureCLIDeb | bash + ``` +- Login to Azure: + ```bash + az login --use-device-code + ``` +- Install NPM Deps (`node_modules/` folder will be published as-is): + ``` + cd utils/flakiness-dashboard/ + npm install + ``` +- Publish: + ```bash + func azure functionapp publish folio-flakiness-dashboard --javascript + ``` diff --git a/utils/flakiness-dashboard/package-lock.json b/utils/flakiness-dashboard/package-lock.json index 1eeb5c0b1f..483798e826 100644 --- a/utils/flakiness-dashboard/package-lock.json +++ b/utils/flakiness-dashboard/package-lock.json @@ -4,8 +4,9 @@ "requires": true, "packages": { "": { + "name": "flakiness-dashboard", "dependencies": { - "@azure/storage-blob": "^12.2.1" + "@azure/storage-blob": "^12.16.0" } }, "node_modules/@azure/abort-controller": { @@ -121,9 +122,9 @@ } }, "node_modules/@azure/storage-blob": { - "version": "12.13.0", - "resolved": "https://registry.npmjs.org/@azure/storage-blob/-/storage-blob-12.13.0.tgz", - "integrity": "sha512-t3Q2lvBMJucgTjQcP5+hvEJMAsJSk0qmAnjDLie2td017IiduZbbC9BOcFfmwzR6y6cJdZOuewLCNFmEx9IrXA==", + "version": "12.16.0", + "resolved": "https://registry.npmjs.org/@azure/storage-blob/-/storage-blob-12.16.0.tgz", + "integrity": "sha512-jz33rUSUGUB65FgYrTRgRDjG6hdPHwfvHe+g/UrwVG8MsyLqSxg9TaW7Yuhjxu1v1OZ5xam2NU6+IpCN0xJO8Q==", "dependencies": { "@azure/abort-controller": "^1.0.0", "@azure/core-http": "^3.0.0", @@ -428,9 +429,9 @@ } }, "@azure/storage-blob": { - "version": "12.13.0", - "resolved": "https://registry.npmjs.org/@azure/storage-blob/-/storage-blob-12.13.0.tgz", - "integrity": "sha512-t3Q2lvBMJucgTjQcP5+hvEJMAsJSk0qmAnjDLie2td017IiduZbbC9BOcFfmwzR6y6cJdZOuewLCNFmEx9IrXA==", + "version": "12.16.0", + "resolved": "https://registry.npmjs.org/@azure/storage-blob/-/storage-blob-12.16.0.tgz", + "integrity": "sha512-jz33rUSUGUB65FgYrTRgRDjG6hdPHwfvHe+g/UrwVG8MsyLqSxg9TaW7Yuhjxu1v1OZ5xam2NU6+IpCN0xJO8Q==", "requires": { "@azure/abort-controller": "^1.0.0", "@azure/core-http": "^3.0.0", diff --git a/utils/flakiness-dashboard/package.json b/utils/flakiness-dashboard/package.json index 8404c7347b..3e13565339 100644 --- a/utils/flakiness-dashboard/package.json +++ b/utils/flakiness-dashboard/package.json @@ -1,5 +1,5 @@ { - "name": "", + "name": "flakiness-dashboard", "version": "", "description": "", "scripts": { @@ -7,6 +7,6 @@ }, "author": "", "dependencies": { - "@azure/storage-blob": "^12.2.1" + "@azure/storage-blob": "^12.16.0" } } diff --git a/utils/flakiness-dashboard/processing/dashboard_compressed_v1.js b/utils/flakiness-dashboard/processing/dashboard_compressed_v1.js index 4718226848..280893437d 100644 --- a/utils/flakiness-dashboard/processing/dashboard_compressed_v1.js +++ b/utils/flakiness-dashboard/processing/dashboard_compressed_v1.js @@ -60,7 +60,7 @@ function compressReports(reports) { specs = new Map(); files[spec.file] = specs; } - const specId = spec.file + '---' + spec.title + ' --- ' + spec.line; + const specId = spec.file + '---' + spec.titlePath.join('-') + ' --- ' + spec.line; let specObject = specs.get(specId); if (!specObject) { specObject = { diff --git a/utils/flakiness-dashboard/processing/index.js b/utils/flakiness-dashboard/processing/index.js index c25e46ba5a..698a65cd21 100644 --- a/utils/flakiness-dashboard/processing/index.js +++ b/utils/flakiness-dashboard/processing/index.js @@ -14,7 +14,7 @@ * limitations under the License. */ -const {blobServiceClient, gunzipAsync, deleteBlob} = require('./utils.js'); +const {gunzipAsync, deleteBlob} = require('./utils.js'); const {processDashboardRaw} = require('./dashboard_raw.js'); const {processDashboardCompressedV1} = require('./dashboard_compressed_v1.js');