Skip to content

Backport hydrateCache() changes to 2.x #7282

Backport hydrateCache() changes to 2.x

Backport hydrateCache() changes to 2.x #7282

Workflow file for this run

# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
# Will not trigger unless PR is ready for review.
name: msal-node E2E Tests
on:
pull_request:
types: [opened, reopened, synchronize, ready_for_review]
paths:
- 'lib/msal-node/**/*'
- 'lib/msal-common/**/*'
- 'samples/msal-node-samples/**/*'
- 'samples/e2eTestUtils/**/*'
- 'samples/package-lock.json'
- '!**.md'
- '.github/workflows/msal-node-e2e.yml'
merge_group:
types: [checks_requested]
concurrency:
group: node-e2e-${{github.ref}}
cancel-in-progress: true
permissions:
contents: read
jobs:
run-e2e:
if: (github.repository == 'AzureAD/microsoft-authentication-library-for-js') && (github.actor != 'dependabot[bot]') && ((github.event.pull_request.head.repo.full_name == github.repository) || (github.event_name == 'merge_group')) && !github.event.pull_request.draft
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
node: [ 14, 16, 18 ]
sample:
- 'auth-code'
- 'client-credentials'
- 'device-code'
- 'silent-flow'
- 'b2c-user-flows'
name: ${{ matrix.sample }} - Node v${{ matrix.node }}
steps:
- uses: actions/checkout@v3
- name: Use Node.js
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node }}
- name: Restore node_modules for libs
uses: actions/cache@v3
id: lib-cache
with:
path: |
node_modules
lib/msal-common/node_modules
lib/msal-node/node_modules
key: ${{ runner.os }}-node-e2e-${{matrix.node}}-${{ hashFiles('package-lock.json', 'lib/msal-common/package-lock.json', 'lib/msal-node/package-lock.json') }}
- name: Clean Install
if: steps.lib-cache.outputs.cache-hit != 'true'
run: npm ci --ignore-scripts
- name: Link local packages
run: npx lerna@6 --scope @azure/msal-node --scope @azure/msal-common bootstrap
- name: Build Package
working-directory: samples/msal-node-samples
run: npm run build:package
- name: Restore node_modules for test tools
if: matrix.node == '10' || matrix.node == '12'
uses: actions/cache@v3
id: test-tools-cache
with:
path: |
samples/node_modules
samples/.cache/puppeteer
key: ${{ runner.os }}-node-test-tools-${{ matrix.node }}-${{ hashFiles('samples/package-lock.json') }}
- name: Install Test Tools
if: steps.test-tools-cache.outputs.cache-hit != 'true'
working-directory: samples
run: npm ci
- name: Restore node_modules for sample
uses: actions/cache@v3
id: sample-cache
with:
path: samples/msal-node-samples/${{ matrix.sample }}/node_modules
key: ${{ runner.os }}-node-e2e-${{ matrix.sample }}-${{ matrix.node }}-${{ hashFiles(format('samples/msal-node-samples/{0}/package.json', matrix.sample), 'samples/package-lock.json') }}
- name: Install Sample
if: steps.sample-cache.outputs.cache-hit != 'true'
working-directory: samples/msal-node-samples/${{ matrix.sample }}
run: |
npm run install:local
npm install
- name: E2E Tests
working-directory: samples/msal-node-samples/${{ matrix.sample }}
timeout-minutes: 10
env:
AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }}
AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
run: npm test
- name: Upload E2E Test Screenshots
uses: actions/upload-artifact@v3
if: failure()
with:
name: e2e-test-screenshots
path: samples/**/screenshots
# Some tooling no longer supports old versions of node - this job will downgrade certain dependencies for testing
# run-e2e-node-old:
# if: (github.repository == 'AzureAD/microsoft-authentication-library-for-js') && (github.actor != 'dependabot[bot]') && ((github.event.pull_request.head.repo.full_name == github.repository) || (github.event_name == 'merge_group'))
# runs-on: ubuntu-latest
# strategy:
# fail-fast: false
# matrix:
# node: [ 10, 12 ]
# sample:
# - 'auth-code'
# - 'device-code'
# - 'silent-flow'
# - 'b2c-user-flows'
# name: ${{ matrix.sample }} - Node v${{ matrix.node }}
# steps:
# - uses: actions/checkout@v3
# - name: Use Node.js
# uses: actions/setup-node@v3
# with:
# node-version: ${{ matrix.node }}
# - name: Restore node_modules for libs
# uses: actions/cache@v3
# id: lib-cache
# with:
# path: |
# node_modules
# lib/msal-common/node_modules
# lib/msal-node/node_modules
# key: ${{ runner.os }}-node-e2e-${{matrix.node}}-${{ hashFiles('package-lock.json', 'lib/msal-common/package-lock.json', 'lib/msal-node/package-lock.json') }}
# - name: Clean Install
# if: steps.lib-cache.outputs.cache-hit != 'true'
# run: npm ci --ignore-scripts
# # Lerna v5 dropped support for Node 10 and 12
# - name: Link local packages
# run: npx lerna@4 --scope @azure/msal-node --scope @azure/msal-common bootstrap
# - name: Build Package
# working-directory: samples/msal-node-samples
# run: npm run build:package
# # Puppeteer v19 drops support for Node 10 and 12
# - name: Downgrade puppeteer for Node 10 and 12
# working-directory: samples
# run: npm install [email protected]
# - name: Install Test Tools
# if: steps.test-tools-cache.outputs.cache-hit != 'true'
# working-directory: samples
# run: npm ci
# - name: Restore node_modules for sample
# uses: actions/cache@v3
# id: sample-cache
# with:
# path: samples/msal-node-samples/${{ matrix.sample }}/node_modules
# key: ${{ runner.os }}-node-e2e-${{ matrix.sample }}-${{ matrix.node }}-${{ hashFiles(format('samples/msal-node-samples/{0}/package.json', matrix.sample), 'samples/package-lock.json') }}
# - name: Install Sample
# if: steps.sample-cache.outputs.cache-hit != 'true'
# working-directory: samples/msal-node-samples/${{ matrix.sample }}
# run: |
# npm run install:local
# npm install
# - name: E2E Tests
# working-directory: samples/msal-node-samples/${{ matrix.sample }}
# timeout-minutes: 10
# env:
# AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }}
# AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
# AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
# run: npm test
# - name: Upload E2E Test Screenshots
# uses: actions/upload-artifact@v3
# if: failure()
# with:
# name: e2e-test-screenshots
# path: samples/**/screenshots
run-electron-e2e:
if: (github.repository == 'AzureAD/microsoft-authentication-library-for-js') && (github.actor != 'dependabot[bot]') && ((github.event.pull_request.head.repo.full_name == github.repository) || (github.event_name == 'merge_group')) && !github.event.pull_request.draft
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [windows-latest, macos-latest]
sample:
- 'ElectronSystemBrowserTestApp'
name: ${{ matrix.sample }} - ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
- name: Use Node.js
uses: actions/setup-node@v3
- name: Restore node_modules for libs
uses: actions/cache@v3
id: lib-cache
with:
path: |
node_modules
lib/msal-common/node_modules
lib/msal-node/node_modules
key: ${{ runner.os }}-node-electron-e2e-${{ hashFiles('package-lock.json', 'lib/msal-common/package-lock.json', 'lib/msal-node/package-lock.json') }}
- name: Clean Install
if: steps.lib-cache.outputs.cache-hit != 'true'
run: npm ci
- name: Build Package
working-directory: samples/msal-node-samples
run: npm run build:package
- name: Restore node_modules for test tools
uses: actions/cache@v3
id: test-tools-cache
with:
path: samples/node_modules
key: ${{ runner.os }}-node-test-tools-${{ hashFiles('samples/package-lock.json') }}
- name: Install Test Tools
if: steps.test-tools-cache.outputs.cache-hit != 'true'
working-directory: samples
run: npm ci
env:
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
PLAYWRIGHT_BROWSERS_PATH: 0
- name: Restore node_modules for sample
uses: actions/cache@v3
id: sample-cache
with:
path: samples/msal-node-samples/${{ matrix.sample }}/node_modules
key: ${{ runner.os }}-electron-e2e-${{ matrix.sample }}-${{ hashFiles(format('samples/msal-node-samples/{0}/package.json', matrix.sample), 'samples/package-lock.json') }}
- name: Install Sample
if: steps.sample-cache.outputs.cache-hit != 'true'
working-directory: samples/msal-node-samples/${{ matrix.sample }}
run: |
npm run install:local
npm install
- name: Install Playwright
working-directory: samples/msal-node-samples/${{ matrix.sample }}
run: npx playwright install
- name: Build Sample
working-directory: samples/msal-node-samples/${{ matrix.sample }}
run: |
npm run build
- name: E2E Tests
working-directory: samples/msal-node-samples/${{ matrix.sample }}
timeout-minutes: 10
env:
AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }}
AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
DEBUG: pw:browser
run: npm test
- name: Upload E2E Test Screenshots
uses: actions/upload-artifact@v3
if: failure()
with:
name: e2e-test-screenshots
path: samples/**/screenshots