Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Playwright test #51

Merged
merged 28 commits into from
Oct 18, 2023
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
f8f8a05
first commits
Philip-21 Sep 10, 2023
3c2d7ef
removing files
Philip-21 Sep 11, 2023
a53f549
Merge branch 'master' into playwright-test
Philip-21 Sep 11, 2023
42c1693
setup functions to be used for playwright tests
Philip-21 Sep 11, 2023
3b297a7
new setup functions and util functions
Philip-21 Sep 12, 2023
7bdbb5e
creating Api requests
Philip-21 Sep 14, 2023
d718774
refactoring fand adjusting helper functions
Philip-21 Sep 16, 2023
39b760b
new login test passed
Philip-21 Sep 16, 2023
abb1b1a
adding more tests
Philip-21 Sep 17, 2023
bf86152
redefining and adding setup functions
Philip-21 Sep 17, 2023
5e5666c
adding more setup functions
Philip-21 Sep 17, 2023
2d8c9b6
utility tests
Philip-21 Sep 17, 2023
39d8f24
reoving timeouts,declaring await where necessary
Philip-21 Sep 23, 2023
fd13965
switchng to typescript
Philip-21 Sep 27, 2023
dda9e6b
setting up playwright to capture snapshots
Philip-21 Sep 29, 2023
0c13af5
reasjusting and removing test files
Philip-21 Sep 29, 2023
9d37825
adjusting actions
Philip-21 Sep 29, 2023
3774444
taking of if statement
Philip-21 Sep 29, 2023
f94fb5d
commenting out cypress actions
Philip-21 Sep 29, 2023
005c6d2
working on playwright workflow
Philip-21 Sep 30, 2023
81cb704
creating new adir to upload artifacts
Philip-21 Sep 30, 2023
4f31aea
deining env var for appid
Philip-21 Sep 30, 2023
f1e584c
rewriting meshmapsnapshot test function
Philip-21 Oct 6, 2023
8245171
indicating playwright workflow properly
Philip-21 Oct 7, 2023
edac40f
removing branch refs
Philip-21 Oct 7, 2023
714a12f
Merge branch 'layer5labs:master' into playwright-test
Philip-21 Oct 14, 2023
8dfd266
reimplementing screenshots
Philip-21 Oct 18, 2023
a96a237
Merge branch 'playwright-test' of https://github.com/Philip-21/meshma…
Philip-21 Oct 18, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions cypress-action/cypress/support/helpers.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { DESIGNER, extension, MESHMAP_PATH } from "./constants"


//utility func that return strings and id
export function waitFor(str) {
return "@" + str;
}
Expand All @@ -9,14 +9,16 @@ export function id(str) {
return "#" + str
}

//cypress setup capabilities
const doInitialSetup = () => {
cy.setViewPort();
cy.login();
cy.setReleaseTag();
cy.interceptCapabilities();
cy.interceptCapabilities();//intercept request to specific endpoint
cy.setMode(DESIGNER);
}

//a callback hook to perform actions before running individual tests
export const beforeEachCallback = () => {
doInitialSetup();
cy.intercept(extension.path).as(extension.alias);
Expand All @@ -30,7 +32,7 @@ export const beforeEachCallbackForCustomUrl = (customPath) => {
cy.visit(customPath);
cy.wait(waitFor(extension.alias), { timeout: 60_000 });
}

//captures meshmap graph screenshots and generates download link
export const saveGraph = (cy) => {
let image = cy.png();
let lnk = document.createElement("a"),
Expand Down
27 changes: 27 additions & 0 deletions playwright-action/.github/workflows/playwright.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name: Playwright Tests
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yh i observed that after i pushed, my master branch wasnt up to-date

on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
test:
timeout-minutes: 60
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 18
- name: Install dependencies
run: npm ci
- name: Install Playwright Browsers
run: npx playwright install --with-deps
- name: Run Playwright tests
run: npx playwright test
- uses: actions/upload-artifact@v3
if: always()
with:
name: playwright-report
path: playwright-report/
retention-days: 30
4 changes: 4 additions & 0 deletions playwright-action/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
node_modules/
/test-results/
/playwright-report/
/playwright/.cache/
59 changes: 59 additions & 0 deletions playwright-action/helpers/playwrightSetup.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
//@ts-check
const { chromium } = require("@playwright/test");
const fs = require('fs');
const path = require('path');

//utility func to generate css selector and return id and strings
function waitFor(str) {
return `@${str}`;
}

function id(str) {
return `#${str}`;
}


//create a fresh testing env for testcases
async function doInitialSetup() {
const browser = await chromium.launch();
const context = await browser.newContext();
const page = await context.newPage();

return { browser, context, page };
}


//capture and save a screenshot
async function captureAndSaveScreenshot(page, filename) {
await page.screenshot({ path: filename });
}

//Save meshmapscreenshot and generate a download link.
async function saveGraph(customUrl) {
const browser = await chromium.launch();
const page = await browser.newPage();

// Navigate to the custom URL
await page.goto(customUrl);

// Capture a screenshot and save it with a custom filename
const date = new Date();
// Format: MeshMap-Fri Sep 09 2023-10:30:45 AM.png
const fileName = `MeshMap-${date.toDateString()}-${date.toLocaleTimeString()}.png`;
const filePath = path.join(__dirname, fileName); // Full path to the saved screenshot

await captureAndSaveScreenshot(page, filePath);

// Close the browser
await browser.close();

// Create a download link
const downloadLink = `/download?fileName=${encodeURIComponent(fileName)}`;

console.log(`Screenshot saved as ${fileName}`);
console.log('Download link:', downloadLink);

return downloadLink;
}

export { waitFor, id, doInitialSetup, captureAndSaveScreenshot, saveGraph };
67 changes: 67 additions & 0 deletions playwright-action/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 13 additions & 0 deletions playwright-action/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"name": "playwright-action",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"@playwright/test": "^1.37.1"
}
}
81 changes: 81 additions & 0 deletions playwright-action/playwright.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
// @ts-check
const { defineConfig, devices } = require('@playwright/test');

/**
* Read environment variables from file.
* https://github.com/motdotla/dotenv
*/
// require('dotenv').config();

/**
* @see https://playwright.dev/docs/test-configuration
*/
module.exports = defineConfig({
testDir: './tests',
/* Run tests in files in parallel */
fullyParallel: true,
/* Fail the build on CI if you accidentally left test.only in the source code. */
forbidOnly: !!process.env.CI,
/* Retry on CI only */
retries: process.env.CI ? 2 : 0,
/* Opt out of parallel tests on CI. */
workers: process.env.CI ? 1 : undefined,
/* Reporter to use. See https://playwright.dev/docs/test-reporters */
reporter: 'html',
/* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */
use: {
/* Base URL to use in actions like `await page.goto('/')`. */
// baseURL: 'http://127.0.0.1:3000',

/* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */
trace: 'on-first-retry',
// Set the timeout to 60 seconds (60000 milliseconds)
timeout: 60000,
},

/* Configure projects for major browsers */
projects: [
{
name: 'chromium',
use: { ...devices['Desktop Chrome'] },
},

{
name: 'firefox',
use: { ...devices['Desktop Firefox'] },
},

{
name: 'webkit',
use: { ...devices['Desktop Safari'] },
},

/* Test against mobile viewports. */
// {
// name: 'Mobile Chrome',
// use: { ...devices['Pixel 5'] },
// },
// {
// name: 'Mobile Safari',
// use: { ...devices['iPhone 12'] },
// },

/* Test against branded browsers. */
// {
// name: 'Microsoft Edge',
// use: { ...devices['Desktop Edge'], channel: 'msedge' },
// },
// {
// name: 'Google Chrome',
// use: { ...devices['Desktop Chrome'], channel: 'chrome' },
// },
],

/* Run your local dev server before starting the tests */
// webServer: {
// command: 'npm run start',
// url: 'http://127.0.0.1:3000',
// reuseExistingServer: !process.env.CI,
// },
});

Loading