diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 1334e5d..dce5d7e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -2,28 +2,6 @@ name: Build and Test on: pull_request: jobs: - e2e: - name: E2E Tests - runs-on: ubuntu-latest - container: browserless/chrome - env: - CI: true - steps: - - uses: actions/checkout@v3 - - - name: Install PNPM - uses: pnpm/action-setup@v2 - with: - version: latest - - - name: Install Dependencies - run: pnpm install - - - name: Build - run: pnpm build - - - name: Test - run: pnpm test build: name: Build runs-on: ubuntu-latest diff --git a/diagrams-demo-gallery/jest-puppeteer.config.js b/diagrams-demo-gallery/jest-puppeteer.config.js deleted file mode 100644 index 14aa55f..0000000 --- a/diagrams-demo-gallery/jest-puppeteer.config.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - launch: { - browserWSEndpoint: 'ws://localhost:3000' - } -}; diff --git a/diagrams-demo-gallery/jest.config.js b/diagrams-demo-gallery/jest.config.js deleted file mode 100644 index 49a710e..0000000 --- a/diagrams-demo-gallery/jest.config.js +++ /dev/null @@ -1,9 +0,0 @@ -const path = require('path'); -module.exports = { - preset: 'jest-puppeteer', - transform: { - '^.+\\.tsx?$': 'ts-jest' - }, - roots: [path.join(__dirname, 'tests-e2e')], - testMatch: ['**/*.test.{ts,tsx}'] -}; diff --git a/diagrams-demo-gallery/package-lock.json b/diagrams-demo-gallery/package-lock.json deleted file mode 100644 index 23a416a..0000000 --- a/diagrams-demo-gallery/package-lock.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "name": "@projectstorm/react-diagrams-gallery", - "version": "6.7.4", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "gsap": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/gsap/-/gsap-3.0.1.tgz", - "integrity": "sha512-9nzEBF7Ss9Ogyw6oEOXZxxVYH8WNRA/nHmIp3DrPOTKmlLxX9MN2ovSoH9TApA+rucBgp9veCedujp5oSQRvZw==" - } - } -} diff --git a/diagrams-demo-gallery/package.json b/diagrams-demo-gallery/package.json index 45a018a..2e2614f 100644 --- a/diagrams-demo-gallery/package.json +++ b/diagrams-demo-gallery/package.json @@ -10,9 +10,7 @@ }, "scripts": { "start": "./node_modules/.bin/start-storybook", - "storybook:build": "./node_modules/.bin/build-storybook -c .storybook -o .out", - "test:run": "../node_modules/.bin/jest --no-cache", - "test": "pnpm storybook:build && pnpm test:run" + "storybook:build": "./node_modules/.bin/build-storybook -c .storybook -o .out" }, "keywords": [ "web", diff --git a/diagrams-demo-gallery/tests-e2e/helpers/E2EBase.ts b/diagrams-demo-gallery/tests-e2e/helpers/E2EBase.ts deleted file mode 100644 index 01d6506..0000000 --- a/diagrams-demo-gallery/tests-e2e/helpers/E2EBase.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { ElementHandle } from 'puppeteer'; - -export abstract class E2EBase { - name: string; - - constructor(name: string) { - this.name = name; - } - - async getSelector(): Promise { - return page; - } - - async getElement(): Promise { - if (!(await this.getSelector())) { - return null; - } - return (await this.getSelector()).$(this.selector()); - } - - async waitForElement(): Promise { - return (await this.getSelector()).waitForSelector(this.selector(), { - timeout: 1000 - }); - } - - protected abstract selector(): string; -} diff --git a/diagrams-demo-gallery/tests-e2e/helpers/E2ELink.ts b/diagrams-demo-gallery/tests-e2e/helpers/E2ELink.ts deleted file mode 100644 index b43cdbc..0000000 --- a/diagrams-demo-gallery/tests-e2e/helpers/E2ELink.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { E2EBase } from './E2EBase'; - -export class E2ELink extends E2EBase { - isID: boolean; - - async select(): Promise { - const point = await page.evaluate((id) => { - const path = document.querySelector(id) as SVGPathElement; - const rect = path.getClientRects().item(0); - return { - x: rect.x + rect.width / 2, - y: rect.y - }; - }, this.selector()); - await page.keyboard.down('Shift'); - await page.mouse.move(point.x, point.y); - await page.mouse.down(); - await page.keyboard.up('Shift'); - } - - protected selector(): string { - if (this.isID) { - return `[data-linkid="${this.name}"] path`; - } - return `[data-default-link-test="${this.name}"] path`; - } -} diff --git a/diagrams-demo-gallery/tests-e2e/helpers/E2ENode.ts b/diagrams-demo-gallery/tests-e2e/helpers/E2ENode.ts deleted file mode 100644 index 7443d4e..0000000 --- a/diagrams-demo-gallery/tests-e2e/helpers/E2ENode.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { E2EBase } from './E2EBase'; -import { E2EPort } from './E2EPort'; - -export class E2ENode extends E2EBase { - async port(id: string): Promise { - return new E2EPort(id, this); - } - - selector(): string { - return `[data-default-node-name="${this.name}"]`; - } -} diff --git a/diagrams-demo-gallery/tests-e2e/helpers/E2EPort.ts b/diagrams-demo-gallery/tests-e2e/helpers/E2EPort.ts deleted file mode 100644 index 494eaa3..0000000 --- a/diagrams-demo-gallery/tests-e2e/helpers/E2EPort.ts +++ /dev/null @@ -1,82 +0,0 @@ -import * as _ from 'lodash'; -import { E2EBase } from './E2EBase'; -import { E2ENode } from './E2ENode'; -import { E2ELink } from './E2ELink'; - -export class E2EPort extends E2EBase { - parent: E2ENode; - - constructor(name: string, parent: E2ENode) { - super(name); - this.parent = parent; - } - - async getLinks(): Promise { - const attribute = await page.evaluate((id) => { - return document.querySelector(id).getAttribute('data-links'); - }, this.selector()); - if (attribute.trim() === '') { - return []; - } - - return _.map(attribute.split(','), (id) => { - const e = new E2ELink(id); - e.isID = true; - return e; - }); - } - - async link(port: E2EPort): Promise { - let currentLinks = _.map(await this.getLinks(), 'name'); - - let bounds = await (await this.getElement()).boundingBox(); - - // click on this port - page.mouse.move(bounds.x, bounds.y); - page.mouse.down(); - // - let bounds2 = await (await port.getElement()).boundingBox(); - - // drag to other port - page.mouse.move(bounds2.x, bounds2.y); - page.mouse.up(); - - let newLinks = _.map(await this.getLinks(), 'name'); - - const s = new E2ELink(_.difference(newLinks, currentLinks)[0]); - s.isID = true; - return s; - } - - async linkToPoint(x: number, y: number): Promise { - let currentLinks = _.map(await this.getLinks(), 'id'); - - let bounds = await (await this.getElement()).boundingBox(); - - // click on this port - page.mouse.move(bounds.x, bounds.y); - page.mouse.down(); - - // drag to point - page.mouse.move(x, y); - page.mouse.up(); - - let newLinks = _.map(await this.getLinks(), 'id'); - - const link = _.difference(newLinks, currentLinks)[0]; - if (!link) { - return null; - } - - // get the parent to get the link - return new E2ELink(link); - } - - async getSelector(): Promise { - return (await this.parent.getElement()) as any; - } - - protected selector(): string { - return `${this.parent.selector()} .port[data-name="${this.name}"]`; - } -} diff --git a/diagrams-demo-gallery/tests-e2e/simple-flow.test.ts b/diagrams-demo-gallery/tests-e2e/simple-flow.test.ts deleted file mode 100644 index 4bca8ff..0000000 --- a/diagrams-demo-gallery/tests-e2e/simple-flow.test.ts +++ /dev/null @@ -1,33 +0,0 @@ -import 'jest'; -import { E2ENode } from './helpers/E2ENode'; - -describe('simple flow test', () => { - beforeEach(async () => { - await page.goto(`file://${__dirname}/../.out/iframe.html?path=/story/simple-usage--simple-flow-example`); - }); - - it('drag link to port adds a link', async () => { - // create a new link - let node1 = new E2ENode('Node 3'); - let node2 = new E2ENode('Node 2'); - - let port1 = await node1.port('Out'); - let port2 = await node2.port('In'); - - let newlink = await port1.link(port2); - await expect(await newlink.waitForElement()).toBeTruthy(); - }); - - it('drag link to node does not add a link', async () => { - // create a new link - let node1 = new E2ENode('Node 3'); - let node2 = new E2ENode('Node 2'); - - let port1 = await node1.port('Out'); - - let node2Bounds = await (await node2.waitForElement()).boundingBox(); - let newlink = await port1.linkToPoint(node2Bounds.x, node2Bounds.y); - - await expect(newlink).toBeFalsy(); - }); -}); diff --git a/diagrams-demo-gallery/tests-e2e/simple.test.ts b/diagrams-demo-gallery/tests-e2e/simple.test.ts deleted file mode 100644 index 6c63863..0000000 --- a/diagrams-demo-gallery/tests-e2e/simple.test.ts +++ /dev/null @@ -1,31 +0,0 @@ -import 'jest'; -import { E2ELink } from './helpers/E2ELink'; -import { E2ENode } from './helpers/E2ENode'; - -describe('simple test', () => { - beforeAll(async () => { - await page.goto(`file://${__dirname}/../.out/iframe.html?path=/story/simple-usage--demo-simple`); - }); - - it('should delete a link and create a new one', async () => { - // get the existing link - let link = new E2ELink('Test'); - await expect(await link.waitForElement()).toBeTruthy(); - - // remove it - await link.select(); - await page.keyboard.press('Delete'); - - await expect(await link.getElement()).toBeFalsy(); - - // create a new link - let node1 = new E2ENode('Node 1'); - let node2 = new E2ENode('Node 2'); - - let port1 = await node1.port('Out'); - let port2 = await node2.port('In'); - - let newlink = await port1.link(port2); - await expect(await newlink.waitForElement()).toBeTruthy(); - }); -}); diff --git a/package.json b/package.json index a98751b..ccbab07 100644 --- a/package.json +++ b/package.json @@ -30,16 +30,11 @@ "devDependencies": { "@changesets/cli": "^2.26.0", "@types/jest": "^29.2.6", - "@types/jest-environment-puppeteer": "^5.0.3", "@types/node": "^18.11.18", - "@types/puppeteer": "^5.4.7", "jest": "^29.3.1", "jest-cli": "^29.3.1", - "jest-puppeteer": "^6.2", "prettier": "^2.8.3", - "puppeteer": "19.6.0", "rimraf": "^4.1.1", - "react-test-renderer": "^18.2.0", "source-map-loader": "^4.0.1", "terser-webpack-plugin": "^5.3.6", "ts-jest": "^29.0.5",