Skip to content

Commit

Permalink
milo libs run test
Browse files Browse the repository at this point in the history
  • Loading branch information
nateekar committed Jan 6, 2024
1 parent b31ef68 commit 2174d09
Show file tree
Hide file tree
Showing 4 changed files with 165 additions and 15 deletions.
10 changes: 6 additions & 4 deletions .github/workflows/milolib.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,17 +24,19 @@ jobs:
action:
name: Running tests
runs-on: ${{ inputs.platform }}
env:
WORKFLOW_NAME: 'Milo Libs Run'
MILO_LIBS_RUN: 'true'

steps:
- name: Check out repository
uses: actions/checkout@v3
- name: Set permissions
run: chmod +x ./path/to/run.sh

- name: Set environment variables
run: |
echo "PR_BRANCH_LIVE_URL_GH=${{ github.event.inputs.branch }}" >> $GITHUB_ENV
echo "PR_BRANCH_MILOLIBS_LIVE_URL=${{ github.event.inputs.branch }}" >> $GITHUB_ENV
echo "MILO_LIBS=${{ github.event.inputs.milolibs }}" >> $GITHUB_ENV
- name: Run Nala ${{ inputs.platform }}
uses: ./
env:
Expand Down
148 changes: 148 additions & 0 deletions global.setup_1.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@
import { exit } from 'process';
const { execSync } = require('child_process');
const { isBranchURLValid } = require('./libs/baseurl.js');
const axios = require('axios');

async function getGitHubPRBranchLiveUrl() {
// get the pr number
const prReference = process.env.GITHUB_REF;
const prNumber = prReference.split('/')[2];

// get the pr branch name
const branch = process.env.GITHUB_HEAD_REF;
const prBranch = branch.replace(/\//g, '-');

// get the org and repo
const repository = process.env.GITHUB_REPOSITORY;
const repoParts = repository.split('/');
const toRepoOrg = repoParts[0];
const toRepoName = repoParts[1];

// Get the org and repo from the environment variables
const prFromOrg = process.env.prOrg;
const prFromRepoName = process.env.prRepo;

let prBranchLiveUrl;

if (toRepoName === 'nala' || toRepoName === 'janus') {
prBranchLiveUrl = `https://main--milo--adobecom.hlx.live`;
} else {
prBranchLiveUrl = `https://${prBranch}--${prFromRepoName}--${prFromOrg}.hlx.live`;
}

try {
if (await isBranchURLValid(prBranchLiveUrl)) {
process.env.PR_BRANCH_LIVE_URL = prBranchLiveUrl;
}
console.info('PR Repository : ', repository);
console.info('PR TO ORG : ', toRepoOrg);
console.info('PR TO REPO : ', toRepoName);
console.info('PR From ORG : ', prFromOrg);
console.info('PR From REPO : ', prFromRepoName);
console.info('PR Branch : ', branch);
console.info('PR Branch(U) : ', prBranch);
console.info('PR Number : ', prNumber);
console.info('PR From Branch live url : ', prBranchLiveUrl);
} catch (err) {
console.error(`Error => Error in setting PR Branch test URL : ${prBranchLiveUrl}`);
console.info(`Note: PR branch test url ${prBranchLiveUrl} is not valid, Exiting test execution.`);
process.exit(1);
}
}

async function getGitHubMiloLibsBranchLiveUrl() {
const repository = process.env.GITHUB_REPOSITORY;

let prBranchLiveUrl;
let miloLibs;

prBranchLiveUrl = process.env.PR_BRANCH_MILOLIBS_LIVE_URL;
miloLibs = process.env.MILO_LIBS;

try {
if (await isBranchURLValid(prBranchLiveUrl)) {
process.env.PR_BRANCH_LIVE_URL = prBranchLiveUrl;
process.env.MILO_LIBS = prBranchLiveUrl;
}
console.info('PR Repository : ', repository);
console.info('PR Branch live url : ', prBranchLiveUrl);
console.info('Milo Libs : ', miloLibs);
} catch (err) {
console.error(`Error => Error in setting PR Branch test URL : ${prBranchLiveUrl}`);
console.info(`Note: PR branch test url ${prBranchLiveUrl} is not valid, Exiting test execution.`);
process.exit(1);
}
}

async function getCircleCIBranchLiveUrl() {
const stageBranchLiveUrl = 'https://milo.stage.adobe.com';

try {
if (await isBranchURLValid(stageBranchLiveUrl)) {
process.env.PR_BRANCH_LIVE_URL = stageBranchLiveUrl;
}
console.info('Stage Branch Live URL : ', stageBranchLiveUrl);
} catch (err) {
console.error('Error => Error in setting Stage Branch test URL : ', stageBranchLiveUrl);
console.info('Note: Stage branch test url is not valid, Exiting test execution.');
process.exit(1);
}
}

async function getLocalBranchLiveUrl() {
try {
const localGitRootDir = execSync('git rev-parse --show-toplevel', { encoding: 'utf-8' }).trim();

if (localGitRootDir) {
const gitRemoteOriginUrl = execSync('git config --get remote.origin.url', { cwd: localGitRootDir, encoding: 'utf-8' }).trim();
const match = gitRemoteOriginUrl.match(/github\.com\/(.*?)\/(.*?)\.git/);

if (match) {
const [localOrg, localRepo] = match.slice(1, 3);
const localBranch = execSync('git rev-parse --abbrev-ref HEAD', { cwd: localGitRootDir, encoding: 'utf-8' }).trim();
let localTestLiveUrl;

if (localRepo === 'nala' || localRepo === 'janus') {
localTestLiveUrl = `https://main--milo--adobecom.hlx.live`;
process.env.MILO_LIBS = '?milolibs=stage';
} else {
localTestLiveUrl = `http://localhost:3000`;
}

if (await isBranchURLValid(localTestLiveUrl)) {
process.env.LOCAL_TEST_LIVE_URL = localTestLiveUrl;
}
console.info('Git ORG : ', localOrg);
console.info('Git REPO : ', localRepo);
console.info('Local Branch : ', localBranch);
console.info('Local Test Live URL : ', process.env.LOCAL_TEST_LIVE_URL);
}
}
} catch (error) {
console.error(`Error => Error in setting local test URL : ${localTestLiveUrl}`);
console.info(`Note: Local or branch test url is not valid, Exiting test execution.`);
process.exit(1);
}
}

async function globalSetup() {
console.info('----Executing Global setup---------');

if (process.env.GITHUB_ACTIONS === 'true') {
console.info('---- Running Tests in the GitHub environment ---------');

if (process.env.MILO_LIBS_RUN === 'true') {
await getGitHubMiloLibsBranchLiveUrl();
} else {
await getGitHubPRBranchLiveUrl();
}
} else if (process.env.CIRCLECI) {
console.info('---- Running Tests in the CircleCI environment ---------');
await getCircleCIBranchLiveUrl();
} else {
console.info('---- Running Tests in the Local environment ---------');
await getLocalBranchLiveUrl();
}
}

export default globalSetup;
2 changes: 1 addition & 1 deletion playwright.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ const envs = require('./envs/envs.js');
const config = {
testDir: './tests/milo',
outputDir: './test-results',
globalSetup: './global.setup.js',
globalSetup: './global.setup_1.js',
/* Maximum time one test can run for. */
timeout: 30 * 1000,
expect: {
Expand Down
20 changes: 10 additions & 10 deletions tests/milo/accordion.block.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import AccordionBlock from '../../selectors/milo/accordion.block.page.js';
let webUtil;
let accordion;
let consoleErrors = [];
let miloLib = '?milolibs=stage';
let miloLibs = process.env.MILO_LIBS;
const knownConsoleErrors = ['Access-Control-Allow-Origin','Failed to load resource: net::ERR_FAILED'];

test.describe('Milo Accordion Block test suite', () => {
Expand All @@ -27,13 +27,13 @@ test.describe('Milo Accordion Block test suite', () => {

// Test 0 : Accordion
test(`${features[0].name},${features[0].tags}`, async ({ page, baseURL }) => {
console.info(`[Test Page]: ${baseURL}${features[0].path}${miloLib}`);
console.info(`[Test Page]: ${baseURL}${features[0].path}${miloLibs}`);
const { data } = features[0];

await test.step('step-1: Go to Accordion block test page', async () => {
await page.goto(`${baseURL}${features[0].path}${miloLib}`);
await page.goto(`${baseURL}${features[0].path}${miloLibs}`);
await page.waitForLoadState('domcontentloaded');
await expect(page).toHaveURL(`${baseURL}${features[0].path}${miloLib}`);
await expect(page).toHaveURL(`${baseURL}${features[0].path}${miloLibs}`);
});

await test.step('step-2: Verify Accrodion block content/specs', async () => {
Expand Down Expand Up @@ -69,13 +69,13 @@ test.describe('Milo Accordion Block test suite', () => {

// Test 1 : Accordion (seo)
test(`${features[1].name},${features[1].tags}`, async ({ page, baseURL }) => {
console.info(`[Test Page]: ${baseURL}${features[1].path}`);
console.info(`[Test Page]: ${baseURL}${features[1].path}${miloLibs}`);
const { data } = features[1];

await test.step('step-1: Go to Accordion block test page', async () => {
await page.goto(`${baseURL}${features[1].path}`);
await page.goto(`${baseURL}${features[1].path}${miloLibs}`);
await page.waitForLoadState('domcontentloaded');
await expect(page).toHaveURL(`${baseURL}${features[1].path}`);
await expect(page).toHaveURL(`${baseURL}${features[1].path}${miloLibs}`);
});

await test.step('step-2: Verify Accrodion seo block specs', async () => {
Expand Down Expand Up @@ -103,13 +103,13 @@ test.describe('Milo Accordion Block test suite', () => {

// Test 2 : Accordion (quiet, max-width-12-desktop-large)
test(`${features[2].name},${features[2].tags}`, async ({ page, baseURL }) => {
console.info(`[Test Page]: ${baseURL}${features[2].path}`);
console.info(`[Test Page]: ${baseURL}${features[2].path}${miloLibs}`);
const { data } = features[2];

await test.step('step-1: Go to Accordion block test page', async () => {
await page.goto(`${baseURL}${features[2].path}`);
await page.goto(`${baseURL}${features[2].path}${miloLibs}`);
await page.waitForLoadState('domcontentloaded');
await expect(page).toHaveURL(`${baseURL}${features[2].path}`);
await expect(page).toHaveURL(`${baseURL}${features[2].path}${miloLibs}`);
});

await test.step('step-2: Verify Accrodion block content/specs', async () => {
Expand Down

0 comments on commit 2174d09

Please sign in to comment.