automation_model 1.0.69 → 1.0.70

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.
Files changed (47) hide show
  1. package/lib/auto_page.d.ts +5 -0
  2. package/lib/auto_page.js +56 -0
  3. package/lib/auto_page.js.map +1 -0
  4. package/lib/browser_manager.d.ts +28 -0
  5. package/lib/browser_manager.js +72 -0
  6. package/lib/browser_manager.js.map +1 -0
  7. package/lib/environment.d.ts +23 -0
  8. package/lib/environment.js +12 -0
  9. package/lib/environment.js.map +1 -0
  10. package/{src/index.ts → lib/index.d.ts} +6 -6
  11. package/lib/index.js +7 -0
  12. package/lib/index.js.map +1 -0
  13. package/lib/init_browser.d.ts +7 -0
  14. package/lib/init_browser.js +59 -0
  15. package/lib/init_browser.js.map +1 -0
  16. package/lib/locator.d.ts +15 -0
  17. package/lib/locator.js +172 -0
  18. package/lib/locator.js.map +1 -0
  19. package/lib/stable_browser.d.ts +26 -0
  20. package/lib/stable_browser.js +526 -0
  21. package/lib/stable_browser.js.map +1 -0
  22. package/lib/table_analyze.d.ts +3 -0
  23. package/lib/table_analyze.js +71 -0
  24. package/lib/table_analyze.js.map +1 -0
  25. package/lib/test_context.d.ts +13 -0
  26. package/lib/test_context.js +12 -0
  27. package/lib/test_context.js.map +1 -0
  28. package/package.json +1 -1
  29. package/.github/workflows/npm-publish.yml +0 -38
  30. package/.vscode/launch.json +0 -30
  31. package/README.md +0 -3
  32. package/ai_config.json +0 -53
  33. package/env.json +0 -3
  34. package/src/auto_page.ts +0 -58
  35. package/src/browser_manager.ts +0 -87
  36. package/src/environment.ts +0 -24
  37. package/src/init_browser.ts +0 -65
  38. package/src/locator.ts +0 -173
  39. package/src/stable_browser.ts +0 -523
  40. package/src/table_analyze.ts +0 -69
  41. package/src/test_context.ts +0 -16
  42. package/tests/create_new_repository.test.js +0 -62
  43. package/tests/debug.test.js +0 -41
  44. package/tests/gmail_login.test.js +0 -39
  45. package/tests/launch_page.test.js +0 -32
  46. package/tests/navigate_to_new_repository_page.test.js +0 -45
  47. package/tsconfig.json +0 -110
@@ -0,0 +1,5 @@
1
+ import type { TestContext } from "./test_context.js";
2
+ declare const navigate: (path?: string) => Promise<void>;
3
+ declare const initContext: (path: string, doNavigate?: boolean, headless?: boolean, world?: any) => Promise<TestContext>;
4
+ declare const closeContext: () => Promise<void>;
5
+ export { initContext, navigate, closeContext };
@@ -0,0 +1,56 @@
1
+ import { browserManager } from "./browser_manager.js";
2
+ import { getContext } from "./init_browser.js";
3
+ import fs from "fs";
4
+ import path from "path";
5
+ let context = null;
6
+ const navigate = async (path = "") => {
7
+ let url = null;
8
+ if (path === null) {
9
+ url = context.environment.baseUrl;
10
+ }
11
+ else {
12
+ url = new URL(path, context.environment.baseUrl).href;
13
+ }
14
+ await context.stable.goto(url);
15
+ await context.stable.waitForPageLoad();
16
+ };
17
+ const _findEmptyFolder = (folder) => {
18
+ if (!folder) {
19
+ folder = "./runs";
20
+ }
21
+ if (!fs.existsSync(folder)) {
22
+ fs.mkdirSync(folder);
23
+ }
24
+ let nextIndex = 1;
25
+ while (fs.existsSync(path.join(folder, nextIndex.toString()))) {
26
+ nextIndex++;
27
+ }
28
+ return path.join(folder, nextIndex.toString());
29
+ };
30
+ const initContext = async (path, doNavigate = true, headless = false, world = null) => {
31
+ if (context) {
32
+ return context;
33
+ }
34
+ context = await getContext(null, headless);
35
+ if (world) {
36
+ world.screenshot = true;
37
+ const reportFolder = _findEmptyFolder();
38
+ if (world.attach) {
39
+ world.attach(reportFolder, { mediaType: "text/plain" });
40
+ }
41
+ world.screenshotPath = reportFolder;
42
+ context.reportFolder = reportFolder;
43
+ }
44
+ if (doNavigate) {
45
+ await navigate(path);
46
+ }
47
+ return context;
48
+ };
49
+ const closeContext = async () => {
50
+ if (context && context.browser) {
51
+ await browserManager.closeBrowser(context.browser);
52
+ }
53
+ context = null;
54
+ };
55
+ export { initContext, navigate, closeContext };
56
+ //# sourceMappingURL=auto_page.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto_page.js","sourceRoot":"","sources":["../../src/auto_page.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,IAAI,OAAO,GAAoB,IAAI,CAAC;AACpC,MAAM,QAAQ,GAAG,KAAK,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE;IACnC,IAAI,GAAG,GAAG,IAAI,CAAC;IACf,IAAI,IAAI,KAAK,IAAI,EAAE;QACjB,GAAG,GAAG,OAAQ,CAAC,WAAY,CAAC,OAAQ,CAAC;KACtC;SAAM;QACL,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,OAAQ,CAAC,WAAY,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;KACzD;IACD,MAAM,OAAQ,CAAC,MAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,OAAQ,CAAC,MAAO,CAAC,eAAe,EAAE,CAAC;AAC3C,CAAC,CAAC;AACF,MAAM,gBAAgB,GAAG,CAAC,MAAc,EAAE,EAAE;IAC1C,IAAI,CAAC,MAAM,EAAE;QACX,MAAM,GAAG,QAAQ,CAAC;KACnB;IACD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;QAC1B,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;KACtB;IACD,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,OAAO,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE;QAC7D,SAAS,EAAE,CAAC;KACb;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjD,CAAC,CAAC;AACF,MAAM,WAAW,GAAG,KAAK,EAAE,IAAW,EAAE,UAAU,GAAG,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,QAAY,IAAI,EAAE,EAAE;IAC/F,IAAI,OAAO,EAAE;QACX,OAAO,OAAO,CAAC;KAChB;IACD,OAAO,GAAG,MAAM,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAE3C,IAAI,KAAK,EAAE;QACT,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;QACxB,MAAM,YAAY,GAAG,gBAAgB,EAAE,CAAC;QACxC,IAAI,KAAK,CAAC,MAAM,EAAE;YAChB,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,CAAC;SACzD;QACD,KAAK,CAAC,cAAc,GAAG,YAAY,CAAC;QACpC,OAAO,CAAC,YAAY,GAAG,YAAY,CAAC;KACrC;IAED,IAAI,UAAU,EAAE;QACd,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;KACtB;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AACF,MAAM,YAAY,GAAG,KAAK,IAAI,EAAE;IAC9B,IAAI,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE;QAC9B,MAAM,cAAc,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;KACpD;IACD,OAAO,GAAG,IAAI,CAAC;AACjB,CAAC,CAAC;AACF,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { Browser as PlaywrightBrowser, BrowserContext, Page } from "playwright";
2
+ import type { Cookie, LocalStorage } from "./environment.js";
3
+ type StorageState = {
4
+ cookies: Cookie[];
5
+ origins: {
6
+ origin: string;
7
+ localStorage: LocalStorage;
8
+ }[];
9
+ };
10
+ declare class BrowserManager {
11
+ browsers: Browser[];
12
+ constructor(browsers?: Browser[]);
13
+ closeAll(): Promise<void>;
14
+ closeBrowser(browser?: PlaywrightBrowser | Browser): Promise<void>;
15
+ createBrowser(headless?: boolean, storageState?: StorageState): Promise<Browser>;
16
+ getBrowser(headless?: boolean, storageState?: StorageState): Promise<Browser>;
17
+ }
18
+ declare class Browser {
19
+ browser: PlaywrightBrowser | null;
20
+ context: BrowserContext | null;
21
+ page: Page | null;
22
+ constructor();
23
+ init(headless?: boolean, storageState?: StorageState): Promise<void>;
24
+ close(): Promise<void>;
25
+ }
26
+ declare const browserManager: BrowserManager;
27
+ export { browserManager };
28
+ export type { BrowserManager, Browser };
@@ -0,0 +1,72 @@
1
+ import { chromium } from "playwright";
2
+ class BrowserManager {
3
+ constructor(browsers = []) {
4
+ this.browsers = browsers;
5
+ }
6
+ async closeAll() {
7
+ await Promise.all(this.browsers.map((browser) => browser.close()));
8
+ this.browsers = [];
9
+ }
10
+ async closeBrowser(browser) {
11
+ if (!browser && this.browsers.length > 0) {
12
+ browser = this.browsers[0];
13
+ }
14
+ if (browser) {
15
+ await browser.close();
16
+ for (let i = 0; i < this.browsers.length; i++) {
17
+ if (this.browsers[i].browser === browser || this.browsers[i] === browser) {
18
+ this.browsers.splice(i, 1);
19
+ i--;
20
+ break;
21
+ }
22
+ }
23
+ }
24
+ }
25
+ async createBrowser(headless = false, storageState) {
26
+ const browser = new Browser();
27
+ await browser.init(headless, storageState);
28
+ this.browsers.push(browser);
29
+ return browser;
30
+ }
31
+ async getBrowser(headless = false, storageState) {
32
+ if (this.browsers.length === 0) {
33
+ return await this.createBrowser(headless, storageState);
34
+ }
35
+ return this.browsers[0];
36
+ }
37
+ }
38
+ class Browser {
39
+ constructor() {
40
+ this.browser = null;
41
+ this.context = null;
42
+ this.page = null;
43
+ }
44
+ async init(headless = false, storageState) {
45
+ this.browser = await chromium.launch({
46
+ headless: headless,
47
+ timeout: 0,
48
+ args: ["--ignore-https-errors"],
49
+ });
50
+ const contextOptions = !!storageState ? { storageState } : undefined;
51
+ this.context = await this.browser.newContext(contextOptions);
52
+ this.page = await this.context.newPage();
53
+ }
54
+ async close() {
55
+ if (this.browser !== null) {
56
+ await this.browser.close();
57
+ this.browser = null;
58
+ this.context = null;
59
+ this.page = null;
60
+ }
61
+ }
62
+ }
63
+ const browserManager = new BrowserManager();
64
+ export { browserManager };
65
+ // let browser = await browserManager.createBrowser();
66
+ // browser.page.goto("https://www.cnn.com");
67
+ // let browser2 = await browserManager.createBrowser();
68
+ // await browser2.page.goto("https://www.google.com");
69
+ // // sleep for 2 seconds
70
+ // await new Promise((r) => setTimeout(r, 1000));
71
+ // await browserManager.closeAll();
72
+ //# sourceMappingURL=browser_manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser_manager.js","sourceRoot":"","sources":["../../src/browser_manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAA6E,MAAM,YAAY,CAAC;AAOjH,MAAM,cAAc;IAClB,YAAmB,WAAsB,EAAE;QAAxB,aAAQ,GAAR,QAAQ,CAAgB;IAC3C,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACnE,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;IACrB,CAAC;IACD,KAAK,CAAC,YAAY,CAAC,OAAoC;QACrD,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YACxC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;SAC5B;QAED,IAAI,OAAO,EAAE;YACX,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC7C,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE;oBACxE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC3B,CAAC,EAAE,CAAC;oBACJ,MAAM;iBACP;aACF;SACF;IACH,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,QAAQ,GAAG,KAAK,EAAE,YAA0B;QAC9D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;QAC9B,MAAM,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAC3C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5B,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,KAAK,CAAC,UAAU,CAAC,QAAQ,GAAG,KAAK,EAAE,YAA0B;QAC3D,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;YAC9B,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;SACzD;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;CACF;AACD,MAAM,OAAO;IAIX;QACE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,KAAK,EAAE,YAA0B;QACrD,IAAI,CAAC,OAAO,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YACnC,QAAQ,EAAE,QAAQ;YAClB,OAAO,EAAE,CAAC;YACV,IAAI,EAAE,CAAC,uBAAuB,CAAC;SAChC,CAAC,CAAC;QAEH,MAAM,cAAc,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAC,YAAY,EAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QAClE,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,cAAkD,CAAC,CAAC;QACjG,IAAI,CAAC,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE;YACzB,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAC3B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;SAClB;IACH,CAAC;CACF;AACD,MAAM,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,CAAC;AAE1B,sDAAsD;AACtD,4CAA4C;AAC5C,uDAAuD;AACvD,sDAAsD;AACtD,yBAAyB;AACzB,iDAAiD;AACjD,mCAAmC"}
@@ -0,0 +1,23 @@
1
+ type Cookie = {
2
+ name: string;
3
+ value: string;
4
+ domain?: string;
5
+ path?: string;
6
+ expires?: number;
7
+ httpOnly?: boolean;
8
+ secure?: boolean;
9
+ sameSite?: string;
10
+ };
11
+ type LocalStorage = Record<string, string>;
12
+ declare class Environment {
13
+ baseUrl?: string | undefined;
14
+ cookies: Cookie[];
15
+ origins: {
16
+ origin: string;
17
+ localStorage: LocalStorage;
18
+ }[];
19
+ constructor(baseUrl?: string | undefined);
20
+ setBaseUrl(url: string): void;
21
+ }
22
+ export { Environment };
23
+ export type { Cookie, LocalStorage };
@@ -0,0 +1,12 @@
1
+ class Environment {
2
+ constructor(baseUrl) {
3
+ this.baseUrl = baseUrl;
4
+ this.cookies = [];
5
+ this.origins = [];
6
+ }
7
+ setBaseUrl(url) {
8
+ this.baseUrl = url;
9
+ }
10
+ }
11
+ export { Environment };
12
+ //# sourceMappingURL=environment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment.js","sourceRoot":"","sources":["../../src/environment.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW;IAGf,YAAmB,OAAgB;QAAhB,YAAO,GAAP,OAAO,CAAS;QAFnC,YAAO,GAAY,EAAE,CAAA;QACrB,YAAO,GAAgD,EAAE,CAAA;IAEzD,CAAC;IACD,UAAU,CAAC,GAAW;QACpB,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;IACrB,CAAC;CACF;AACD,OAAO,EAAE,WAAW,EAAE,CAAC"}
@@ -1,6 +1,6 @@
1
- export * from "./auto_page.js";
2
- export * from "./init_browser.js";
3
- export * from "./stable_browser.js";
4
- export * from "./environment.js";
5
- export * from "./auto_page.js";
6
- export * from "./browser_manager.js";
1
+ export * from "./auto_page.js";
2
+ export * from "./init_browser.js";
3
+ export * from "./stable_browser.js";
4
+ export * from "./environment.js";
5
+ export * from "./auto_page.js";
6
+ export * from "./browser_manager.js";
package/lib/index.js ADDED
@@ -0,0 +1,7 @@
1
+ export * from "./auto_page.js";
2
+ export * from "./init_browser.js";
3
+ export * from "./stable_browser.js";
4
+ export * from "./environment.js";
5
+ export * from "./auto_page.js";
6
+ export * from "./browser_manager.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { Environment } from "./environment.js";
2
+ import { TestContext } from "./test_context.js";
3
+ import { Browser as PlaywrightBrowser } from "playwright";
4
+ import { Browser } from "./browser_manager.js";
5
+ declare const getContext: (environment: Environment | null, headless?: boolean, logger?: null) => Promise<TestContext>;
6
+ declare const closeBrowser: (browser?: Browser | PlaywrightBrowser) => Promise<void>;
7
+ export { getContext, closeBrowser };
@@ -0,0 +1,59 @@
1
+ import fs from "node:fs";
2
+ import { Environment } from "./environment.js";
3
+ import { browserManager } from "./browser_manager.js";
4
+ import { TestContext } from "./test_context.js";
5
+ import { StableBrowser } from "./stable_browser.js";
6
+ // let environment = null;
7
+ // init browser create context and page, if context and page are not null
8
+ const getContext = async function (environment, headless = false, logger) {
9
+ if (environment === null) {
10
+ environment = initEnvironment();
11
+ }
12
+ const { cookies, origins } = environment;
13
+ const storageState = { cookies, origins };
14
+ let browser = await browserManager.getBrowser(headless, storageState);
15
+ let context = new TestContext();
16
+ context.browser = browser.browser;
17
+ context.playContext = browser.context;
18
+ context.page = browser.page;
19
+ context.environment = environment;
20
+ context.stable = new StableBrowser(context.browser, context.page, logger);
21
+ // await _initCookies(context);
22
+ return context;
23
+ };
24
+ // const _initCookies = async function (context) {
25
+ // if (context.environment.cookies) {
26
+ // const cookies = [];
27
+ // for (let i = 0; i < context.environment.cookies.length; i++) {
28
+ // const cookie = context.environment.cookies[i];
29
+ // if (cookie.expires && cookie.expires == "undefined") {
30
+ // delete cookie.expires;
31
+ // }
32
+ // cookies.push(cookie);
33
+ // }
34
+ // await context.playContext.addCookies(cookies);
35
+ // }
36
+ // };
37
+ const closeBrowser = async function (browser) {
38
+ await browserManager.closeBrowser(browser);
39
+ };
40
+ const initEnvironment = function () {
41
+ // if (environment === null) {
42
+ const environment = new Environment();
43
+ try {
44
+ const data = fs.readFileSync("env.json", "utf8");
45
+ //console.log("data", data);
46
+ const envObject = JSON.parse(data);
47
+ //console.log("envObject", envObject);
48
+ Object.assign(environment, envObject);
49
+ //console.log("env", environment);
50
+ console.log("Base url: " + environment.baseUrl);
51
+ }
52
+ catch (err) {
53
+ console.error("Error reading env.json", err);
54
+ }
55
+ // }
56
+ return environment;
57
+ };
58
+ export { getContext, closeBrowser };
59
+ //# sourceMappingURL=init_browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init_browser.js","sourceRoot":"","sources":["../../src/init_browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD,0BAA0B;AAE1B,yEAAyE;AACzE,MAAM,UAAU,GAAG,KAAK,WAAW,WAA6B,EAAE,QAAQ,GAAG,KAAK,EAAE,MAAa;IAC/F,IAAI,WAAW,KAAK,IAAI,EAAE;QACxB,WAAW,GAAG,eAAe,EAAE,CAAC;KACjC;IACD,MAAM,EAAC,OAAO,EAAE,OAAO,EAAC,GAAG,WAAW,CAAC;IACvC,MAAM,YAAY,GAAG,EAAC,OAAO,EAAE,OAAO,EAAC,CAAC;IACxC,IAAI,OAAO,GAAG,MAAM,cAAc,CAAC,UAAU,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACtE,IAAI,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAChC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAClC,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IACtC,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC5B,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC;IAElC,OAAO,CAAC,MAAM,GAAG,IAAI,aAAa,CAAC,OAAO,CAAC,OAAQ,EAAE,OAAO,CAAC,IAAK,EAAE,MAAM,CAAC,CAAC;IAC5E,+BAA+B;IAC/B,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AACF,kDAAkD;AAClD,uCAAuC;AACvC,0BAA0B;AAC1B,qEAAqE;AACrE,uDAAuD;AACvD,+DAA+D;AAC/D,iCAAiC;AACjC,UAAU;AACV,8BAA8B;AAC9B,QAAQ;AACR,qDAAqD;AACrD,MAAM;AACN,KAAK;AAEL,MAAM,YAAY,GAAG,KAAK,WAAW,OAAmC;IACtE,MAAM,cAAc,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AAC7C,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG;IACtB,8BAA8B;IAC5B,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;IACtC,IAAI;QACF,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACjD,4BAA4B;QAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACnC,sCAAsC;QACtC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QACtC,kCAAkC;QAClC,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;KACjD;IAAC,OAAO,GAAG,EAAE;QACZ,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC;KAC9C;IACH,IAAI;IACJ,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC"}
@@ -0,0 +1,15 @@
1
+ declare function processTableQuery(table: Element, query: string): {
2
+ cells: any[];
3
+ error?: undefined;
4
+ rect?: undefined;
5
+ } | {
6
+ error: string;
7
+ cells?: undefined;
8
+ rect?: undefined;
9
+ } | {
10
+ cells: any[];
11
+ rect: DOMRect | null;
12
+ error?: undefined;
13
+ };
14
+ type TprocessTableQuery = typeof processTableQuery;
15
+ export type { TprocessTableQuery };
package/lib/locator.js ADDED
@@ -0,0 +1,172 @@
1
+ const selectors = null;
2
+ document.selectors = selectors;
3
+ const tableSelector = null;
4
+ document.tableSelector = tableSelector;
5
+ // locator | operator | value
6
+ // table.rows | >= | 1
7
+ // table[1]["Availability"].text | equals | 100%
8
+ // table[*][2].text |not_equals| error
9
+ function processTableQuery(table, query) {
10
+ if (document.selectors && document.selectors.length > 0) {
11
+ for (let i = 0; i < document.selectors.length; i++) {
12
+ const selector = document.selectors[i];
13
+ const allElementsList = document.querySelectorAll(selector.css);
14
+ const allElements = Array.from(allElementsList);
15
+ for (let j = 0; j < allElements.length; j++) {
16
+ const element = allElements[j];
17
+ element.setAttribute("data-blinq-role", selector.changes.role);
18
+ }
19
+ }
20
+ }
21
+ const rows = Array.from(table.querySelectorAll("tr, [data-blinq-role='row'], [role='row']"));
22
+ const _rows = rows.length;
23
+ const _columnNames = [];
24
+ let _columns = 0;
25
+ let columnheader = [];
26
+ if (rows.length > 0) {
27
+ //const rowheader = rows[0];
28
+ columnheader = Array.from(table.querySelectorAll("th, [data-blinq-role='columnheader'], [role='columnheader']"));
29
+ console.log("columnheader length", columnheader.length);
30
+ _columns = columnheader.length;
31
+ for (let i = 0; i < columnheader.length; i++) {
32
+ const cell = columnheader[i];
33
+ const cellText = cell.innerText;
34
+ _columnNames.push(cellText);
35
+ }
36
+ }
37
+ let _rowStartIndex = 0;
38
+ // if (columnheader.length > 0) {
39
+ // tableData.rowStartIndex = 1;
40
+ // }
41
+ const tableData = {
42
+ rows: _rows,
43
+ columns: _columns,
44
+ columnNames: _columnNames,
45
+ rowStartIndex: _rowStartIndex,
46
+ };
47
+ if (query.startsWith("table.")) {
48
+ const result = [];
49
+ const property = query.substring(6);
50
+ //console.log("property", property);
51
+ // @ts-ignore
52
+ const value = tableData[property];
53
+ //console.log("value", value);
54
+ result.push(value);
55
+ return { cells: result };
56
+ }
57
+ const pattern = /^table\[(.+)\]\[(.+)\]\.(.+)$/;
58
+ const match = query.match(pattern);
59
+ if (!match) {
60
+ return { error: "Invalid quary" };
61
+ }
62
+ const rowSelector = match[1];
63
+ let columnSelector = match[2];
64
+ const property = match[3];
65
+ let selectedRows = [];
66
+ if (rowSelector === "*") {
67
+ selectedRows = rows;
68
+ }
69
+ else {
70
+ // @ts-ignore
71
+ if (isNaN(rowSelector)) {
72
+ return { error: "Invalid row selector" };
73
+ }
74
+ const rowIndex = parseInt(rowSelector);
75
+ if (rowIndex < 0 || rowIndex >= rows.length) {
76
+ return { error: "Invalid row selector" };
77
+ }
78
+ selectedRows.push(rows[rowIndex]);
79
+ }
80
+ console.log("selectedRows count", selectedRows.length);
81
+ const selectedCells = [];
82
+ // @ts-ignore
83
+ if (isNaN(columnSelector)) {
84
+ if (columnSelector.startsWith('"') && columnSelector.endsWith('"')) {
85
+ columnSelector = columnSelector.substring(1, columnSelector.length - 1);
86
+ }
87
+ else if (columnSelector.startsWith("'") && columnSelector.endsWith("'")) {
88
+ columnSelector = columnSelector.substring(1, columnSelector.length - 1);
89
+ }
90
+ if (columnheader.length === 0) {
91
+ return { error: "No column header available" };
92
+ }
93
+ let foundHeader = null;
94
+ for (let i = 0; i < columnheader.length; i++) {
95
+ const cell = columnheader[i];
96
+ const cellText = cell.innerText;
97
+ console.log("cellText", cellText);
98
+ if (cellText === columnSelector) {
99
+ foundHeader = cell;
100
+ break;
101
+ }
102
+ }
103
+ if (!foundHeader) {
104
+ return { error: "No column header found" };
105
+ }
106
+ const foundHeaderRec = foundHeader.getBoundingClientRect();
107
+ for (let i = 0; i < selectedRows.length; i++) {
108
+ const row = selectedRows[i];
109
+ const cells = Array.from(row.querySelectorAll("td, [data-blinq-role='cell'], [role='cell']"));
110
+ console.log("cells count", cells.length);
111
+ for (let j = 0; j < cells.length; j++) {
112
+ const cell = cells[j];
113
+ const rec = cell.getBoundingClientRect();
114
+ const xCenter = rec.left + rec.width / 2;
115
+ if (foundHeaderRec.left <= xCenter && xCenter <= foundHeaderRec.right) {
116
+ selectedCells.push(cell);
117
+ }
118
+ }
119
+ }
120
+ }
121
+ else {
122
+ const columnIndex = parseInt(columnSelector);
123
+ if (columnIndex < 0 || columnIndex >= columnheader.length) {
124
+ return { error: "Column index out of bounds" };
125
+ }
126
+ for (let i = 0; i < selectedRows.length; i++) {
127
+ const row = selectedRows[i];
128
+ const cells = Array.from(row.querySelectorAll("td, [data-blinq-role='cell'], [role='cell']"));
129
+ selectedCells.push(cells[columnIndex]);
130
+ }
131
+ }
132
+ let rect = null;
133
+ const result = [];
134
+ for (let i = 0; i < selectedCells.length; i++) {
135
+ let added = false;
136
+ if (property === "element") {
137
+ added = true;
138
+ result.push(selectedCells[i]);
139
+ }
140
+ else {
141
+ if (property === "text" || property === "innerText") {
142
+ added = true;
143
+ result.push(selectedCells[i].innerText);
144
+ }
145
+ else {
146
+ if (selectedCells[i].hasAttribute(property)) {
147
+ added = true;
148
+ result.push(selectedCells[i].getAttribute(property));
149
+ }
150
+ else {
151
+ added = true;
152
+ // @ts-ignore
153
+ result.push(selectedCells[i][property]);
154
+ }
155
+ }
156
+ if (added) {
157
+ rect = rect ? merge(rect, selectedCells[i].getBoundingClientRect()) : selectedCells[i].getBoundingClientRect();
158
+ }
159
+ }
160
+ }
161
+ return { cells: result, rect };
162
+ }
163
+ const merge = (rec1, rec2) => {
164
+ const x = Math.min(rec1.left, rec2.left);
165
+ const y = Math.min(rec1.top, rec2.top);
166
+ const width = Math.max(rec1.right, rec2.right) - x;
167
+ const height = Math.max(rec1.bottom, rec2.bottom) - y;
168
+ return { x, y, width, height };
169
+ };
170
+ document.processTableQuery = processTableQuery;
171
+ export {};
172
+ //# sourceMappingURL=locator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"locator.js","sourceRoot":"","sources":["../../src/locator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import type { Browser, Page } from "playwright";
2
+ type Params = Record<string, string>;
3
+ declare class StableBrowser {
4
+ browser: Browser;
5
+ page: Page;
6
+ logger: any;
7
+ constructor(browser: Browser, page: Page, logger?: any);
8
+ goto(url: string): Promise<void>;
9
+ _fixUsingParams(text: any, _params: Params): any;
10
+ _getLocator(locator: any, scope: any, _params: Params): any;
11
+ _locateElementByText(scope: any, text1: any, tag1: any, regex: boolean | undefined, _params: Params): Promise<any>;
12
+ _collectLocatorInformation(selectorHierarchy: any, index: number | undefined, scope: any, foundLocators: any, _params: Params): Promise<void>;
13
+ _locate(selectors: any, info: any, _params?: Params, timeout?: number): Promise<any>;
14
+ click(selector: any, _params?: Params, options?: {}, world?: null): Promise<{}>;
15
+ selectOption(selector: any, values: any, _params?: null, options?: {}, world?: null): Promise<{}>;
16
+ fill(selector: any, value: any, enter?: boolean, _params?: null, options?: {}, world?: null): Promise<{}>;
17
+ getText(selector: any, _params?: null, options?: {}, info?: {}, world?: null): Promise<any>;
18
+ containsPattern(selector: any, pattern: any, text: any, _params?: null, options?: {}, world?: null): Promise<{}>;
19
+ containsText(selector: any, text: any, _params?: null, options?: {}, world?: null): Promise<{}>;
20
+ _screenShot(options?: {}, world?: null): Promise<void>;
21
+ verifyElementExistInPage(selector: any, _params?: null, options?: {}, world?: null): Promise<{}>;
22
+ analyzeTable(selector: any, query: any, operator: any, value: any, _params?: null, options?: {}, world?: null): Promise<{}>;
23
+ waitForPageLoad(options?: {}, world?: null): Promise<void>;
24
+ _reportToWorld(world: any, properties?: {}): void;
25
+ }
26
+ export { StableBrowser };