sefiutils 1.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +46 -12
- package/lib/fiberUtils.d.ts +13 -0
- package/lib/fiberUtils.d.ts.map +1 -0
- package/lib/fiberUtils.js +60 -0
- package/lib/fiberUtils.js.map +1 -0
- package/lib/globalSetup.d.ts +22 -0
- package/lib/globalSetup.d.ts.map +1 -0
- package/lib/globalSetup.js +88 -0
- package/lib/globalSetup.js.map +1 -0
- package/{src/globalTeardown.ts → lib/globalTeardown.d.ts} +5 -12
- package/lib/globalTeardown.d.ts.map +1 -0
- package/lib/globalTeardown.js +34 -0
- package/lib/globalTeardown.js.map +1 -0
- package/lib/localSetup.d.ts +4 -0
- package/lib/localSetup.d.ts.map +1 -0
- package/lib/localSetup.js +139 -0
- package/lib/localSetup.js.map +1 -0
- package/lib/localTeardown.d.ts +6 -0
- package/lib/localTeardown.d.ts.map +1 -0
- package/lib/localTeardown.js +28 -0
- package/lib/localTeardown.js.map +1 -0
- package/lib/seUtils.d.ts +127 -0
- package/lib/seUtils.d.ts.map +1 -0
- package/lib/seUtils.js +510 -0
- package/lib/seUtils.js.map +1 -0
- package/package.json +4 -1
- package/.gitlab-ci.yml +0 -20
- package/jest.config.js +0 -11
- package/logo.graffle +0 -0
- package/logo.png +0 -0
- package/src/fiberUtils.ts +0 -60
- package/src/globalSetup.ts +0 -62
- package/src/localSetup.ts +0 -100
- package/src/localTeardown.ts +0 -14
- package/src/seUtils.ts +0 -448
- package/tests/tsconfig.json +0 -7
- package/tsconfig.json +0 -102
- /package/{src → lib}/execScripts/dom.js +0 -0
- /package/{src → lib}/execScripts/fiber.js +0 -0
package/.gitlab-ci.yml
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
# Template for node see:
|
|
2
|
-
# https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Nodejs.gitlab-ci.yml
|
|
3
|
-
# Coverage see:
|
|
4
|
-
# https://gist.github.com/rishitells/3c4536131819cff4eba2c8ab5bbb4570
|
|
5
|
-
|
|
6
|
-
image: node:latest
|
|
7
|
-
|
|
8
|
-
stages:
|
|
9
|
-
- test
|
|
10
|
-
|
|
11
|
-
javascript:
|
|
12
|
-
stage: test
|
|
13
|
-
script:
|
|
14
|
-
- npm install
|
|
15
|
-
- npm run build
|
|
16
|
-
- npm run test
|
|
17
|
-
artifacts:
|
|
18
|
-
reports:
|
|
19
|
-
junit:
|
|
20
|
-
- junit.xml
|
package/jest.config.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/** @type {import('ts-jest/dist/types').InitialOptionsTsJest} */
|
|
2
|
-
module.exports = {
|
|
3
|
-
preset: 'ts-jest',
|
|
4
|
-
testEnvironment: 'node',
|
|
5
|
-
collectCoverage: true,
|
|
6
|
-
collectCoverageFrom: ['<rootDir>/src/**/*.{ts,js,jsm,tsx,jsx,tsm}'],
|
|
7
|
-
coverageReporters: ["text", "clover"],
|
|
8
|
-
reporters: [ "default", ["jest-junit", { suiteNameTemplate: "{filename}" }], ],
|
|
9
|
-
testPathIgnorePatterns: ["<rootDir>/lib/", "<rootDir>/node_modules/"],
|
|
10
|
-
coveragePathIgnorePatterns: ["<rootDir>/lib/", "<rootDir>/node_modules/", "<rootDir>/tests/"]
|
|
11
|
-
};
|
package/logo.graffle
DELETED
|
Binary file
|
package/logo.png
DELETED
|
Binary file
|
package/src/fiberUtils.ts
DELETED
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import { WebDriver } from "selenium-webdriver";
|
|
2
|
-
import { execScript } from "./seUtils";
|
|
3
|
-
|
|
4
|
-
export type ComponentType = "html" | "function" | "root" | "null" | "other";
|
|
5
|
-
|
|
6
|
-
export interface ComponentNode {
|
|
7
|
-
// parent: ComponentNode | undefined;
|
|
8
|
-
name: string
|
|
9
|
-
kind: ComponentType;
|
|
10
|
-
props?: string[]
|
|
11
|
-
children: ComponentNode[]
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export async function getReactComponentTree(driver: WebDriver): Promise<ComponentNode> {
|
|
15
|
-
const cmpTree: ComponentNode = await execScript(driver,
|
|
16
|
-
"execScripts/fiber.js", "uniDirFunctionComponentsTree");
|
|
17
|
-
return cmpTree;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
export function dumpComponentTree(node: ComponentNode) {
|
|
22
|
-
let out = "";
|
|
23
|
-
dump(node)
|
|
24
|
-
return out;
|
|
25
|
-
|
|
26
|
-
function dump(node: ComponentNode, indent: string = "") {
|
|
27
|
-
out += `${indent}${node.name} (${node.kind})${(node.props && node.props.length > 0) ? ": " + node.props.join(", ") : ""}\n`;
|
|
28
|
-
for (const child of node.children) {
|
|
29
|
-
dump(child, indent + " ");
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
export function findInComponentTree(node: ComponentNode, predicate: (node: ComponentNode) => boolean): ComponentNode | undefined {
|
|
35
|
-
if (predicate(node)) {
|
|
36
|
-
return node;
|
|
37
|
-
}
|
|
38
|
-
for (const child of node.children) {
|
|
39
|
-
const found = findInComponentTree(child, predicate);
|
|
40
|
-
if (found) {
|
|
41
|
-
return found;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
return undefined;
|
|
45
|
-
}
|
|
46
|
-
export function findAllInComponentTree(node: ComponentNode, predicate: (node: ComponentNode) => boolean) {
|
|
47
|
-
|
|
48
|
-
const res: ComponentNode[] = [];
|
|
49
|
-
findAll(node);
|
|
50
|
-
return res;
|
|
51
|
-
|
|
52
|
-
function findAll(node: ComponentNode) {
|
|
53
|
-
if (predicate(node)) {
|
|
54
|
-
return res.push(node);
|
|
55
|
-
}
|
|
56
|
-
for (const child of node.children) {
|
|
57
|
-
findAll(child);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
package/src/globalSetup.ts
DELETED
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
declare global {
|
|
2
|
-
var server: any; // only loaded in remote case; this global variable is only visible in globalTeardown.ts
|
|
3
|
-
// and not in the tests, cf. https://jestjs.io/docs/configuration#globalsetup-string
|
|
4
|
-
}
|
|
5
|
-
/**
|
|
6
|
-
* This function is called by Jest once before all tests are executed.
|
|
7
|
-
* In order to get called, it must be referenced in the jest configuration file:
|
|
8
|
-
* ```
|
|
9
|
-
* "globalSetup": "<rootDir>/tests/globalSetup.ts"
|
|
10
|
-
* ```
|
|
11
|
-
*
|
|
12
|
-
* **Important Note**: "Any global variables that are defined through globalSetup can only be
|
|
13
|
-
* read in globalTeardown. You cannot retrieve globals defined here in your test suites."
|
|
14
|
-
* [Jest Documentation](https://jestjs.io/docs/configuration#globalsetup-string)
|
|
15
|
-
*
|
|
16
|
-
* We only start the selenium server here if we are running in remote mode, which is the default.
|
|
17
|
-
* The mode can configured by setting the environment variable BROWSER to "chrome", "firefox" or "remote".
|
|
18
|
-
*
|
|
19
|
-
* Do not forget a global teardown function, which is called after all tests are executed,
|
|
20
|
-
* cf. globalTeardown.ts
|
|
21
|
-
*/
|
|
22
|
-
export default async function setGlobalObjects() {
|
|
23
|
-
const browser = (process.env.BROWSER as "chrome" | "firefox" | "remote") || "remote";
|
|
24
|
-
|
|
25
|
-
// console.log(`Using browser: ${browser}`);
|
|
26
|
-
try {
|
|
27
|
-
if (browser === "remote") {
|
|
28
|
-
await setUpSeleniumServer();
|
|
29
|
-
}
|
|
30
|
-
} catch (err) {
|
|
31
|
-
console.error(`Error setting up server: ${err}`);
|
|
32
|
-
throw err;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
async function setUpSeleniumServer() {
|
|
38
|
-
|
|
39
|
-
const remote = await import("selenium-webdriver/remote");
|
|
40
|
-
//@ts-ignore
|
|
41
|
-
const jar = await import('selenium-server-standalone-jar');
|
|
42
|
-
|
|
43
|
-
if (globalThis.server) {
|
|
44
|
-
await globalThis.server.kill();
|
|
45
|
-
console.log(`Server killed before starting again`);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
// console.log(`Load selenium server from ${jar.path}`);
|
|
49
|
-
const s = new remote.SeleniumServer(jar.path, {
|
|
50
|
-
port: 4444,
|
|
51
|
-
env: {
|
|
52
|
-
...process.env,
|
|
53
|
-
"SE_NODE_MAX_SESSIONS": "4",
|
|
54
|
-
"SE_NODE_OVERRIDE_MAX_SESSIONS": "true",
|
|
55
|
-
// "JAVA_OPTS": "-XX:ActiveProcessorCount=4"
|
|
56
|
-
}
|
|
57
|
-
});
|
|
58
|
-
const address = await s.start(3000);
|
|
59
|
-
globalThis.server = s;
|
|
60
|
-
// const address = await globalThis.server.address()
|
|
61
|
-
// console.log(`Selenium server started at address: ${address}`);
|
|
62
|
-
}
|
package/src/localSetup.ts
DELETED
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
import { Builder, Capabilities, WebDriver } from "selenium-webdriver";
|
|
2
|
-
import { setBrowserWindowSize, setViewPortSize } from "./seUtils";
|
|
3
|
-
|
|
4
|
-
export const LOCAL_SETUP_TIMEOUT = 20000;
|
|
5
|
-
|
|
6
|
-
export async function localSetup(page: string, width = 500, height = 500): Promise<WebDriver> {
|
|
7
|
-
const driver = await getWebDriver();
|
|
8
|
-
console.log(`Load page: ${page}`);
|
|
9
|
-
await driver.get(page);
|
|
10
|
-
await setBrowserWindowSize(driver, width, height);
|
|
11
|
-
return driver;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* To be configured in jest setup file via globalSetup as it needs to be run before any tests in all files.
|
|
16
|
-
* Additionally,
|
|
17
|
-
* ```
|
|
18
|
-
* await driver.get(page);
|
|
19
|
-
* await setViewPortSize(500, 500);
|
|
20
|
-
* ```
|
|
21
|
-
* are to be called.
|
|
22
|
-
*/
|
|
23
|
-
async function getWebDriver() {
|
|
24
|
-
const browser = (process.env.BROWSER as "chrome" | "firefox" | "remote") || "remote";
|
|
25
|
-
|
|
26
|
-
// console.log(`Using browser: ${browser}`);
|
|
27
|
-
try {
|
|
28
|
-
if (browser === "chrome") {
|
|
29
|
-
return await setUpWebDriverChrome();
|
|
30
|
-
} else if (browser === "firefox") {
|
|
31
|
-
return await setUpWebDriverFirefox();
|
|
32
|
-
} else if (browser === "remote") {
|
|
33
|
-
return await setUpWebDriverInDocker();
|
|
34
|
-
} else {
|
|
35
|
-
throw new Error(`Unknown browser: ${browser}`);
|
|
36
|
-
}
|
|
37
|
-
} catch (err) {
|
|
38
|
-
console.error(`Error setting up driver: ${err}`);
|
|
39
|
-
throw err;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
async function setUpWebDriverInDocker() {
|
|
45
|
-
|
|
46
|
-
const firefox = await import('selenium-webdriver/firefox');
|
|
47
|
-
|
|
48
|
-
let address = "http://localhost:4444/wd/hub";
|
|
49
|
-
let start = Date.now();
|
|
50
|
-
const driver = await new Builder()
|
|
51
|
-
.usingServer(address)
|
|
52
|
-
.withCapabilities(Capabilities.firefox())
|
|
53
|
-
.setFirefoxOptions(new firefox.Options().headless())
|
|
54
|
-
.build();
|
|
55
|
-
let duration = (Date.now() - start) / 1000;
|
|
56
|
-
// console.log(`Driver resolved and connected to ${address}, required ${duration}s.`);
|
|
57
|
-
return driver;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* To be called in the beforeAll() function of a test suite.
|
|
63
|
-
* Additionally,
|
|
64
|
-
* ```
|
|
65
|
-
* await driver.get(page);
|
|
66
|
-
* await setViewPortSize(500, 500);
|
|
67
|
-
* ```
|
|
68
|
-
* are to be called.
|
|
69
|
-
*/
|
|
70
|
-
async function setUpWebDriverChrome() {
|
|
71
|
-
//@ts-ignore
|
|
72
|
-
await import('chromedriver');
|
|
73
|
-
const chrome = await import('selenium-webdriver/chrome');
|
|
74
|
-
const driver = await new Builder()
|
|
75
|
-
.forBrowser('chrome')
|
|
76
|
-
.setChromeOptions(new chrome.Options().headless())
|
|
77
|
-
.build();
|
|
78
|
-
return driver;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* To be called in the beforeAll() function of a test suite.
|
|
83
|
-
* Additionally,
|
|
84
|
-
* ```
|
|
85
|
-
* await driver.get(page);
|
|
86
|
-
* await setViewPortSize(500, 500);
|
|
87
|
-
* ```
|
|
88
|
-
* are to be called.
|
|
89
|
-
*/
|
|
90
|
-
async function setUpWebDriverFirefox() {
|
|
91
|
-
//@ts-ignore
|
|
92
|
-
await import('geckodriver'); // installed geckodriver will cause remote configuration to fail in docker...
|
|
93
|
-
const firefox = await import('selenium-webdriver/firefox');
|
|
94
|
-
const driver = await new Builder()
|
|
95
|
-
.forBrowser('firefox')
|
|
96
|
-
.setFirefoxOptions(new firefox.Options().headless())
|
|
97
|
-
.build();
|
|
98
|
-
|
|
99
|
-
return driver;
|
|
100
|
-
}
|
package/src/localTeardown.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { WebDriver } from "selenium-webdriver";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* To be called in the afterAll() function of a test suite.
|
|
5
|
-
*/
|
|
6
|
-
export async function localTeardown(driver: WebDriver) {
|
|
7
|
-
if (driver) {
|
|
8
|
-
await driver.quit();
|
|
9
|
-
// console.log(`Driver quit`);
|
|
10
|
-
} else {
|
|
11
|
-
throw new Error("Driver not started yet");
|
|
12
|
-
|
|
13
|
-
}
|
|
14
|
-
}
|