@intuned/runtime-dev 1.0.6-cli.8 → 1.0.6-cli.8.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/dist/commands/common/projectExclusions.d.ts +2 -0
- package/dist/commands/common/projectExclusions.js +8 -0
- package/dist/commands/common/tsNodeImport.js +0 -2
- package/dist/commands/common/utils/unixSocket.d.ts +1 -0
- package/dist/commands/deploy/utils.js +2 -2
- package/dist/commands/init/init.js +3 -4
- package/dist/commands/init/utils.d.ts +3 -3
- package/dist/commands/init/utils.js +32 -21
- package/dist/commands/intuned-run/intuned-run.js +8 -6
- package/dist/commands/intuned-run/utils.js +1 -0
- package/dist/common/asyncLocalStorage/index.d.ts +2 -1
- package/dist/common/asyncLocalStorage/index.js +2 -5
- package/dist/common/cli/constants.d.ts +0 -0
- package/dist/common/cli/constants.js +1 -0
- package/dist/common/cli/types.d.ts +52 -0
- package/dist/common/cli/types.js +7 -0
- package/dist/common/cli/utils.d.ts +5 -0
- package/dist/common/cli/utils.js +39 -0
- package/dist/common/runApi/index.js +0 -2
- package/dist/common/runApi/types.d.ts +2 -2
- package/package.json +2 -3
- package/{my-intuned-project → r}/api/book-details.ts +0 -1
- package/r/api/books-all.ts +35 -0
- package/r/api/c.ts +0 -0
- package/{my-intuned-project → r}/package.json +1 -4
- package/r/tsconfig.json +47 -0
- package/r/utils/books.ts +32 -0
- package/{my-intuned-project → r}/yarn.lock +1 -10
- package/WebTemplate.zip +0 -0
- package/my-intuned-project/api/books-all.ts +0 -68
- package/my-intuned-project/emp/Intuned.json +0 -18
- package/my-intuned-project/emp/____testParameters/learn/actions/download.json +0 -8
- package/my-intuned-project/emp/____testParameters/learn/actions/fillForm.json +0 -1
- package/my-intuned-project/emp/____testParameters/learn/actions/upload.json +0 -8
- package/my-intuned-project/emp/____testParameters/learn/data-extraction/ai-extraction.json +0 -1
- package/my-intuned-project/emp/____testParameters/learn/data-extraction/extract-data-from-content.json +0 -1
- package/my-intuned-project/emp/____testParameters/learn/data-extraction/markdown-extraction.json +0 -8
- package/my-intuned-project/emp/____testParameters/learn/data-extraction/optimized-array-exteractor.json +0 -32
- package/my-intuned-project/emp/____testParameters/learn/data-extraction/optimized-object-extractor.json +0 -1
- package/my-intuned-project/emp/____testParameters/learn/data-extraction/pdf.json +0 -8
- package/my-intuned-project/emp/____testParameters/learn/playwright/fill-and-submit-forms.json +0 -1
- package/my-intuned-project/emp/____testParameters/learn/playwright/iframes.json +0 -1
- package/my-intuned-project/emp/____testParameters/learn/playwright/inject-code.json +0 -1
- package/my-intuned-project/emp/____testParameters/learn/playwright/locators-and-actions.json +0 -1
- package/my-intuned-project/emp/____testParameters/learn/playwright/navigation.json +0 -1
- package/my-intuned-project/emp/____testParameters/learn/playwright/network-interception.json +0 -1
- package/my-intuned-project/emp/____testParameters/learn/playwright/scrape-data.json +0 -1
- package/my-intuned-project/emp/____testParameters/learn/playwright/wait-for-state-change.json +0 -1
- package/my-intuned-project/emp/api/learn/actions/download.ts +0 -71
- package/my-intuned-project/emp/api/learn/actions/fillForm.ts +0 -223
- package/my-intuned-project/emp/api/learn/actions/upload.ts +0 -38
- package/my-intuned-project/emp/api/learn/data-extraction/ai-extraction.ts +0 -72
- package/my-intuned-project/emp/api/learn/data-extraction/extract-data-from-content.ts +0 -76
- package/my-intuned-project/emp/api/learn/data-extraction/markdown-extraction.ts +0 -47
- package/my-intuned-project/emp/api/learn/data-extraction/optimized-array-exteractor.ts +0 -49
- package/my-intuned-project/emp/api/learn/data-extraction/optimized-object-extractor.ts +0 -54
- package/my-intuned-project/emp/api/learn/data-extraction/pdf.ts +0 -123
- package/my-intuned-project/emp/api/learn/playwright/fill-and-submit-forms.ts +0 -73
- package/my-intuned-project/emp/api/learn/playwright/iframes.ts +0 -22
- package/my-intuned-project/emp/api/learn/playwright/inject-code.ts +0 -40
- package/my-intuned-project/emp/api/learn/playwright/locators-and-actions.ts +0 -58
- package/my-intuned-project/emp/api/learn/playwright/navigation.ts +0 -25
- package/my-intuned-project/emp/api/learn/playwright/network-interception.ts +0 -43
- package/my-intuned-project/emp/api/learn/playwright/scrape-data.ts +0 -58
- package/my-intuned-project/emp/api/learn/playwright/wait-for-state-change.ts +0 -44
- package/my-intuned-project/emp/api/sample.ts +0 -15
- package/my-intuned-project/emp/package.json +0 -31
- package/my-intuned-project/emp/utils/helpers.ts +0 -3
- package/my-intuned-project/emp/yarn.lock +0 -4530
- package/my-intuned-project/params/bookInput.json +0 -3
- /package/{my-intuned-project → r}/Intuned.json +0 -0
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { BrowserContext, Page } from "playwright-core";
|
|
2
|
-
import {
|
|
3
|
-
extractMarkdownFromFile,
|
|
4
|
-
extractMarkdownFromPage,
|
|
5
|
-
extractTablesFromFile,
|
|
6
|
-
} from "@intuned/sdk/ai-extractors";
|
|
7
|
-
import { extendPlaywrightPage } from "@intuned/sdk/playwright";
|
|
8
|
-
|
|
9
|
-
interface Params {
|
|
10
|
-
// Add your params here
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
export default async function handler(
|
|
14
|
-
params: Params,
|
|
15
|
-
_playwrightPage: Page,
|
|
16
|
-
context: BrowserContext
|
|
17
|
-
) {
|
|
18
|
-
const page = extendPlaywrightPage(_playwrightPage);
|
|
19
|
-
await page.goto(
|
|
20
|
-
"https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html"
|
|
21
|
-
);
|
|
22
|
-
const siteMarkdown = extractMarkdownFromPage(page);
|
|
23
|
-
|
|
24
|
-
const specMarkdown = await extractMarkdownFromFile(
|
|
25
|
-
{
|
|
26
|
-
type: "pdf",
|
|
27
|
-
source: {
|
|
28
|
-
type: "url",
|
|
29
|
-
data: "https://intuned-docs-public-images.s3.amazonaws.com/27UP600_27UP650_ENG_US.pdf",
|
|
30
|
-
},
|
|
31
|
-
},
|
|
32
|
-
{ label: "pdf_markdown" }
|
|
33
|
-
);
|
|
34
|
-
|
|
35
|
-
const fileTables = await extractTablesFromFile(
|
|
36
|
-
{
|
|
37
|
-
type: "pdf",
|
|
38
|
-
source: {
|
|
39
|
-
type: "url",
|
|
40
|
-
data: "https://intuned-docs-public-images.s3.amazonaws.com/27UP600_27UP650_ENG_US.pdf",
|
|
41
|
-
},
|
|
42
|
-
},
|
|
43
|
-
{ label: "pdf_markdown" }
|
|
44
|
-
);
|
|
45
|
-
|
|
46
|
-
return { siteMarkdown, specMarkdown, fileTables };
|
|
47
|
-
}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { BrowserContext, Page } from "playwright-core";
|
|
2
|
-
import { extendPlaywrightPage } from "@intuned/sdk/playwright";
|
|
3
|
-
|
|
4
|
-
interface Params {
|
|
5
|
-
category?: string;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
export default async function handler(
|
|
9
|
-
params: Params,
|
|
10
|
-
_playwrightPage: Page,
|
|
11
|
-
context: BrowserContext
|
|
12
|
-
) {
|
|
13
|
-
const page = extendPlaywrightPage(_playwrightPage);
|
|
14
|
-
await page.goto("https://books.toscrape.com/");
|
|
15
|
-
if (params.category)
|
|
16
|
-
await page
|
|
17
|
-
.locator("div.side_categories")
|
|
18
|
-
.getByText(params.category)
|
|
19
|
-
.click();
|
|
20
|
-
const books = await page.extractArrayOptimized({
|
|
21
|
-
label: "books_list",
|
|
22
|
-
itemEntityName: "book",
|
|
23
|
-
prompt: "scrape the books list from the page.",
|
|
24
|
-
strategy: {
|
|
25
|
-
model: "claude-3.5-sonnet",
|
|
26
|
-
type: "HTML",
|
|
27
|
-
},
|
|
28
|
-
itemEntitySchema: {
|
|
29
|
-
type: "object",
|
|
30
|
-
properties: {
|
|
31
|
-
title: {
|
|
32
|
-
type: "string",
|
|
33
|
-
primary: true,
|
|
34
|
-
description: "book title",
|
|
35
|
-
},
|
|
36
|
-
price: {
|
|
37
|
-
type: "string",
|
|
38
|
-
description: "book price",
|
|
39
|
-
},
|
|
40
|
-
in_stock: {
|
|
41
|
-
type: "string",
|
|
42
|
-
description: "book in stock or out of stock",
|
|
43
|
-
},
|
|
44
|
-
},
|
|
45
|
-
required: ["title", "price", "in_stock"],
|
|
46
|
-
},
|
|
47
|
-
});
|
|
48
|
-
return books;
|
|
49
|
-
}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { BrowserContext, Page } from "playwright-core";
|
|
2
|
-
import { extendPlaywrightPage } from "@intuned/sdk/playwright";
|
|
3
|
-
|
|
4
|
-
interface Params {
|
|
5
|
-
// Add your params here
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
export default async function handler(
|
|
9
|
-
params: Params,
|
|
10
|
-
_playwrightPage: Page,
|
|
11
|
-
context: BrowserContext
|
|
12
|
-
) {
|
|
13
|
-
const page = extendPlaywrightPage(_playwrightPage);
|
|
14
|
-
const url = [
|
|
15
|
-
"https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html",
|
|
16
|
-
"https://books.toscrape.com/catalogue/tipping-the-velvet_999/index.html",
|
|
17
|
-
"https://books.toscrape.com/catalogue/soumission_998/index.html",
|
|
18
|
-
"https://books.toscrape.com/catalogue/the-requiem-red_995/index.html",
|
|
19
|
-
"https://books.toscrape.com/catalogue/the-dirty-little-secrets-of-getting-your-dream-job_994/index.html",
|
|
20
|
-
"https://books.toscrape.com/catalogue/the-coming-woman-a-novel-based-on-the-life-of-the-infamous-feminist-victoria-woodhull_993/index.html",
|
|
21
|
-
];
|
|
22
|
-
const books = [] as any[];
|
|
23
|
-
for (const link of url) {
|
|
24
|
-
await page.goto(link);
|
|
25
|
-
const result = await page.extractObjectOptimized({
|
|
26
|
-
label: "books_to_scrape",
|
|
27
|
-
entityName: "book_info",
|
|
28
|
-
entitySchema: {
|
|
29
|
-
type: "object",
|
|
30
|
-
properties: {
|
|
31
|
-
title: {
|
|
32
|
-
type: "string",
|
|
33
|
-
description: "title of the book",
|
|
34
|
-
},
|
|
35
|
-
price: {
|
|
36
|
-
type: "string",
|
|
37
|
-
},
|
|
38
|
-
in_stock: {
|
|
39
|
-
type: "string",
|
|
40
|
-
},
|
|
41
|
-
UPC: {
|
|
42
|
-
type: "string",
|
|
43
|
-
},
|
|
44
|
-
product_type: {
|
|
45
|
-
type: "string",
|
|
46
|
-
},
|
|
47
|
-
},
|
|
48
|
-
required: ["title", "price", "in_stock", "UPC", "product_type"],
|
|
49
|
-
},
|
|
50
|
-
});
|
|
51
|
-
books.push(result);
|
|
52
|
-
}
|
|
53
|
-
return books;
|
|
54
|
-
}
|
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
import { BrowserContext, Page } from "playwright-core";
|
|
2
|
-
import { extractStructuredDataFromFile } from "@intuned/sdk/ai-extractors";
|
|
3
|
-
import { PdfFile } from "@intuned/sdk/files";
|
|
4
|
-
import { extendPlaywrightPage } from "@intuned/sdk/playwright";
|
|
5
|
-
|
|
6
|
-
interface Params {
|
|
7
|
-
// Add your params here
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export default async function handler(
|
|
11
|
-
params: Params,
|
|
12
|
-
_playwrightPage: Page,
|
|
13
|
-
context: BrowserContext
|
|
14
|
-
) {
|
|
15
|
-
const page = extendPlaywrightPage(_playwrightPage);
|
|
16
|
-
await page.goto("https://sandbox.intuned.dev/pdfs");
|
|
17
|
-
const monitors = await page.extractArrayOptimized({
|
|
18
|
-
label: "pdf demo site",
|
|
19
|
-
itemEntityName: "monitor",
|
|
20
|
-
itemEntitySchema: {
|
|
21
|
-
type: "object",
|
|
22
|
-
properties: {
|
|
23
|
-
name: {
|
|
24
|
-
type: "string",
|
|
25
|
-
primary: true,
|
|
26
|
-
},
|
|
27
|
-
manufacturer: {
|
|
28
|
-
type: "string",
|
|
29
|
-
},
|
|
30
|
-
model: {
|
|
31
|
-
type: "string",
|
|
32
|
-
},
|
|
33
|
-
spec_href: {
|
|
34
|
-
type: "string",
|
|
35
|
-
description: "href value of the spec for the monitor",
|
|
36
|
-
},
|
|
37
|
-
},
|
|
38
|
-
required: ["name", "spec_href", "manufacturer", "model"],
|
|
39
|
-
},
|
|
40
|
-
});
|
|
41
|
-
for (const monitor of monitors) {
|
|
42
|
-
const specs = await extractStructuredDataFromFile(
|
|
43
|
-
{
|
|
44
|
-
type: "pdf",
|
|
45
|
-
source: {
|
|
46
|
-
type: "url",
|
|
47
|
-
data: monitor.spec_href,
|
|
48
|
-
},
|
|
49
|
-
},
|
|
50
|
-
{
|
|
51
|
-
label: "spec files",
|
|
52
|
-
dataSchema: {
|
|
53
|
-
type: "object",
|
|
54
|
-
properties: {
|
|
55
|
-
models: {
|
|
56
|
-
description: "models number included in this spec sheet",
|
|
57
|
-
type: "array",
|
|
58
|
-
items: {
|
|
59
|
-
type: "string",
|
|
60
|
-
},
|
|
61
|
-
},
|
|
62
|
-
color_depth: {
|
|
63
|
-
type: "string",
|
|
64
|
-
description: "color depth of the monitor",
|
|
65
|
-
},
|
|
66
|
-
max_resolution: {
|
|
67
|
-
type: "string",
|
|
68
|
-
description: "max rolustion of the screen and at what hz",
|
|
69
|
-
},
|
|
70
|
-
power_source: {
|
|
71
|
-
type: "object",
|
|
72
|
-
properties: {
|
|
73
|
-
power_rating: {
|
|
74
|
-
type: "string",
|
|
75
|
-
},
|
|
76
|
-
prowser_consumption: {
|
|
77
|
-
type: "string",
|
|
78
|
-
},
|
|
79
|
-
},
|
|
80
|
-
},
|
|
81
|
-
adpator: {
|
|
82
|
-
type: "string",
|
|
83
|
-
description: "AC AD adaptor specs",
|
|
84
|
-
},
|
|
85
|
-
dimensions: {
|
|
86
|
-
type: "object",
|
|
87
|
-
properties: {
|
|
88
|
-
with_stand: {
|
|
89
|
-
type: "string",
|
|
90
|
-
},
|
|
91
|
-
without_stand: {
|
|
92
|
-
type: "string",
|
|
93
|
-
},
|
|
94
|
-
},
|
|
95
|
-
},
|
|
96
|
-
weight: {
|
|
97
|
-
type: "object",
|
|
98
|
-
properties: {
|
|
99
|
-
with_stand: {
|
|
100
|
-
type: "string",
|
|
101
|
-
},
|
|
102
|
-
without_stand: {
|
|
103
|
-
type: "string",
|
|
104
|
-
},
|
|
105
|
-
},
|
|
106
|
-
},
|
|
107
|
-
},
|
|
108
|
-
required: [
|
|
109
|
-
"models",
|
|
110
|
-
"color_depth",
|
|
111
|
-
"max_resolution",
|
|
112
|
-
"power_source",
|
|
113
|
-
"adpator",
|
|
114
|
-
"dimensions",
|
|
115
|
-
"weight",
|
|
116
|
-
],
|
|
117
|
-
},
|
|
118
|
-
}
|
|
119
|
-
);
|
|
120
|
-
monitor.specs = specs;
|
|
121
|
-
}
|
|
122
|
-
return monitors;
|
|
123
|
-
}
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import { BrowserContext, Page } from "playwright-core";
|
|
2
|
-
import { downloadFile } from "@intuned/sdk/files";
|
|
3
|
-
import { extendPlaywrightPage } from "@intuned/sdk/playwright";
|
|
4
|
-
|
|
5
|
-
interface Params {
|
|
6
|
-
firstName: string;
|
|
7
|
-
lastName: string;
|
|
8
|
-
address1: string;
|
|
9
|
-
address2: string;
|
|
10
|
-
city: string;
|
|
11
|
-
state: string;
|
|
12
|
-
zip: string;
|
|
13
|
-
country: string;
|
|
14
|
-
nameOnCard: string;
|
|
15
|
-
cardNumber: string;
|
|
16
|
-
expiration: string;
|
|
17
|
-
cvv: string;
|
|
18
|
-
saveAddress: boolean;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
async function downloadImageToUse(page: Page) {
|
|
22
|
-
const image = await downloadFile(page, {
|
|
23
|
-
type: "DirectLink",
|
|
24
|
-
link: "https://images.pexels.com/photos/1222271/pexels-photo-1222271.jpeg",
|
|
25
|
-
});
|
|
26
|
-
return image.path();
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
export default async function handler(
|
|
30
|
-
params: Params,
|
|
31
|
-
_playwrightPage: Page,
|
|
32
|
-
context: BrowserContext
|
|
33
|
-
) {
|
|
34
|
-
const page = extendPlaywrightPage(_playwrightPage);
|
|
35
|
-
await page.goto(
|
|
36
|
-
"https://demo-site-eta.vercel.app/steps-form/ShippingAddress"
|
|
37
|
-
);
|
|
38
|
-
/**
|
|
39
|
-
* Step 1
|
|
40
|
-
*/
|
|
41
|
-
// text fields
|
|
42
|
-
await page.getByLabel("First Name *").type(params.firstName, { delay: 500 });
|
|
43
|
-
await page.locator("[name='lastName']").type(params.lastName);
|
|
44
|
-
await page.locator("[name='addressLine1']").type(params.address1);
|
|
45
|
-
await page.locator("[name='addressLine2']").type(params.address2);
|
|
46
|
-
await page.locator("[name='city']").type(params.city);
|
|
47
|
-
await page.locator("[name='state']").type(params.state);
|
|
48
|
-
await page.locator("[name='zipCode']").type(params.zip);
|
|
49
|
-
// select field
|
|
50
|
-
await page.locator("[name='country']").selectOption(params.country);
|
|
51
|
-
// checkbox
|
|
52
|
-
await page.locator("[name='futurePurchase']").check();
|
|
53
|
-
// submit
|
|
54
|
-
await page.getByRole("button", { name: "Next" }).click();
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* Step 2
|
|
58
|
-
*/
|
|
59
|
-
// text fields
|
|
60
|
-
await page.locator("[name='nameOnCard']").type(params.nameOnCard);
|
|
61
|
-
await page.locator("[name='cardNumber']").type(params.cardNumber);
|
|
62
|
-
await page.locator("[name='expiryDate']").type(params.expiration);
|
|
63
|
-
await page.locator("[name='cvv']").type(params.cvv);
|
|
64
|
-
// checkbox
|
|
65
|
-
await page.locator("[name='rememberCreditCardDetails']").check();
|
|
66
|
-
//submit
|
|
67
|
-
await page.getByRole("button", { name: "Next" }).click();
|
|
68
|
-
|
|
69
|
-
const text = await page
|
|
70
|
-
.locator("p", { hasText: "Total Price" })
|
|
71
|
-
.textContent();
|
|
72
|
-
return text;
|
|
73
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { BrowserContext, Page } from "playwright-core";
|
|
2
|
-
import { extendPlaywrightPage } from "@intuned/sdk/playwright";
|
|
3
|
-
|
|
4
|
-
interface Params {
|
|
5
|
-
// Add your params here
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
export default async function handler(
|
|
9
|
-
params: Params,
|
|
10
|
-
_playwrightPage: Page,
|
|
11
|
-
context: BrowserContext
|
|
12
|
-
) {
|
|
13
|
-
const page = extendPlaywrightPage(_playwrightPage);
|
|
14
|
-
await page.goto("https://testautomationpractice.blogspot.com/");
|
|
15
|
-
const frame = page.frameLocator("#frame-one796456169");
|
|
16
|
-
await frame.locator("#RESULT_TextField-0").fill("Random Name");
|
|
17
|
-
await frame.getByText("Female").check();
|
|
18
|
-
await frame.locator("#RESULT_TextField-2").fill("12121994");
|
|
19
|
-
await page.waitForTimeout(2000);
|
|
20
|
-
await frame.getByRole("button", { name: "Submit" }).click();
|
|
21
|
-
return {};
|
|
22
|
-
}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { BrowserContext, Page } from "playwright-core";
|
|
2
|
-
import { extendPlaywrightPage } from "@intuned/sdk/playwright";
|
|
3
|
-
|
|
4
|
-
interface Params {
|
|
5
|
-
// Add your params here
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
export default async function handler(
|
|
9
|
-
params: Params,
|
|
10
|
-
_playwrightPage: Page,
|
|
11
|
-
context: BrowserContext
|
|
12
|
-
) {
|
|
13
|
-
const page = extendPlaywrightPage(_playwrightPage);
|
|
14
|
-
await page.goto("https://example.com");
|
|
15
|
-
|
|
16
|
-
// Transform the DOM
|
|
17
|
-
await page.evaluate(() => {
|
|
18
|
-
const header = document.querySelector("h1");
|
|
19
|
-
if (header) {
|
|
20
|
-
header.textContent = "Playwright DOM Manipulation Example";
|
|
21
|
-
header.style.color = "red";
|
|
22
|
-
}
|
|
23
|
-
const paragraph = document.querySelector("p");
|
|
24
|
-
if (paragraph) {
|
|
25
|
-
paragraph.textContent = "This paragraph has been changed by Playwright.";
|
|
26
|
-
paragraph.style.fontSize = "20px";
|
|
27
|
-
}
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
// Perform a fetch request and log the response
|
|
31
|
-
const response = await page.evaluate(async () => {
|
|
32
|
-
const response = await fetch(
|
|
33
|
-
"https://jsonplaceholder.typicode.com/todos/1"
|
|
34
|
-
);
|
|
35
|
-
const data = await response.json();
|
|
36
|
-
return data;
|
|
37
|
-
});
|
|
38
|
-
console.log("Fetch response:", response);
|
|
39
|
-
return {};
|
|
40
|
-
}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import { BrowserContext, Page } from "playwright-core";
|
|
2
|
-
import { extendPlaywrightPage } from "@intuned/sdk/playwright";
|
|
3
|
-
|
|
4
|
-
interface Params {
|
|
5
|
-
// Add your params here
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
export default async function handler(
|
|
9
|
-
params: Params,
|
|
10
|
-
_playwrightPage: Page,
|
|
11
|
-
context: BrowserContext
|
|
12
|
-
) {
|
|
13
|
-
const page = extendPlaywrightPage(_playwrightPage);
|
|
14
|
-
await page.goto("https://testautomationpractice.blogspot.com/");
|
|
15
|
-
// get by text and wait for the locator to be visible;
|
|
16
|
-
await page
|
|
17
|
-
.getByText("Automation Testing Practice")
|
|
18
|
-
.waitFor({ state: "visible" });
|
|
19
|
-
/**
|
|
20
|
-
* ==================
|
|
21
|
-
* Locators
|
|
22
|
-
* ==================
|
|
23
|
-
*/
|
|
24
|
-
// by css id
|
|
25
|
-
const nameIdLocator = page.locator("#name");
|
|
26
|
-
// by xpath
|
|
27
|
-
const nameXpathLocator = page.locator(
|
|
28
|
-
"xpath=/html/body/div[4]/div[2]/div[2]/div[2]/div[2]/div[2]/div[2]/div/div[4]/div[1]/div/div/div[1]/div[1]/div/div/div/div/div[2]/div[1]/input[1]"
|
|
29
|
-
);
|
|
30
|
-
// by label
|
|
31
|
-
const genderCheckboxLocator = page.getByLabel("Female");
|
|
32
|
-
// by regex
|
|
33
|
-
const regexLocators = page.getByText(/table/);
|
|
34
|
-
// regex will point to two elements so need to find all locators
|
|
35
|
-
const allRegex = await regexLocators.all();
|
|
36
|
-
for (const regexLocator of allRegex) {
|
|
37
|
-
console.log(await regexLocator.textContent());
|
|
38
|
-
}
|
|
39
|
-
// by role and name
|
|
40
|
-
const submitButton = page.getByRole("button", { name: /Submit/ });
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* ==================
|
|
44
|
-
* Actions
|
|
45
|
-
* ==================
|
|
46
|
-
*/
|
|
47
|
-
// type locator
|
|
48
|
-
await nameIdLocator.type("My name");
|
|
49
|
-
// text content
|
|
50
|
-
const headerContent = await page.locator("#header").textContent();
|
|
51
|
-
// click
|
|
52
|
-
await page.getByText("New Browser Window").first().click();
|
|
53
|
-
// double click
|
|
54
|
-
await page.getByText("Copy Text").click({ clickCount: 2 });
|
|
55
|
-
// check radio button
|
|
56
|
-
await genderCheckboxLocator.check();
|
|
57
|
-
return "Done!";
|
|
58
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { BrowserContext, Page } from "playwright-core";
|
|
2
|
-
import { extendPlaywrightPage } from "@intuned/sdk/playwright";
|
|
3
|
-
|
|
4
|
-
interface Params {
|
|
5
|
-
// Add your params here
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
export default async function handler(
|
|
9
|
-
params: Params,
|
|
10
|
-
_playwrightPage: Page,
|
|
11
|
-
context: BrowserContext
|
|
12
|
-
) {
|
|
13
|
-
const page = extendPlaywrightPage(_playwrightPage);
|
|
14
|
-
// navigate to a page
|
|
15
|
-
await page.goto("https://www.wikipedia.org/");
|
|
16
|
-
await page.getByRole("link", { name: "English" }).click();
|
|
17
|
-
// wait for page to be loaded and all network requests are done
|
|
18
|
-
await page.waitForLoadState("networkidle");
|
|
19
|
-
|
|
20
|
-
// open another tab
|
|
21
|
-
const secondTab = await context.newPage();
|
|
22
|
-
await secondTab.goto("https://www.yahoo.com/", { waitUntil: "load" });
|
|
23
|
-
|
|
24
|
-
return "Done!";
|
|
25
|
-
}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { BrowserContext, Page } from "playwright-core";
|
|
2
|
-
import { extendPlaywrightPage } from "@intuned/sdk/playwright";
|
|
3
|
-
|
|
4
|
-
interface Params {
|
|
5
|
-
// Add your params here
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
export default async function handler(
|
|
9
|
-
params: Params,
|
|
10
|
-
_playwrightPage: Page,
|
|
11
|
-
context: BrowserContext
|
|
12
|
-
) {
|
|
13
|
-
const companies: {
|
|
14
|
-
name: string;
|
|
15
|
-
website: string;
|
|
16
|
-
industry: string;
|
|
17
|
-
tags: string[];
|
|
18
|
-
}[] = [];
|
|
19
|
-
const page = extendPlaywrightPage(_playwrightPage);
|
|
20
|
-
const responsePromise = page.waitForResponse(async (response) => {
|
|
21
|
-
const requestUrl = response.request().url();
|
|
22
|
-
if (requestUrl.includes("indexes/*/queries")) {
|
|
23
|
-
const jsonResponse = JSON.parse((await response.body()).toString());
|
|
24
|
-
if (jsonResponse.results[0].hits.length > 1) {
|
|
25
|
-
return true;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
return false;
|
|
29
|
-
});
|
|
30
|
-
await page.goto(`https://www.ycombinator.com/companies`);
|
|
31
|
-
const response = await responsePromise;
|
|
32
|
-
const jsonResponse = JSON.parse((await response.body()).toString());
|
|
33
|
-
companies.push(
|
|
34
|
-
...jsonResponse.results[0].hits.map((i) => ({
|
|
35
|
-
name: i.name,
|
|
36
|
-
website: i.website,
|
|
37
|
-
industry: i.industy,
|
|
38
|
-
tags: i.tags,
|
|
39
|
-
}))
|
|
40
|
-
);
|
|
41
|
-
return companies;
|
|
42
|
-
return {};
|
|
43
|
-
}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import { BrowserContext, Page } from "playwright-core";
|
|
2
|
-
import { extendPlaywrightPage } from "@intuned/sdk/playwright";
|
|
3
|
-
|
|
4
|
-
interface Params {
|
|
5
|
-
// Add your params here
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
export default async function handler(
|
|
9
|
-
params: Params,
|
|
10
|
-
_playwrightPage: Page,
|
|
11
|
-
context: BrowserContext
|
|
12
|
-
) {
|
|
13
|
-
const page = extendPlaywrightPage(_playwrightPage);
|
|
14
|
-
await page.goto("https://demo-site-eta.vercel.app/lists/card");
|
|
15
|
-
const listContainerLocator = page.locator(
|
|
16
|
-
"xpath=html/body/div/div/main/div/div/div[3]/div"
|
|
17
|
-
);
|
|
18
|
-
const listItems = await listContainerLocator.locator("> div").all();
|
|
19
|
-
const contractsList = [];
|
|
20
|
-
for (let i = 0; i < listItems.length; i++) {
|
|
21
|
-
const itemLocator = listItems[i];
|
|
22
|
-
const title = await itemLocator.locator("h3").textContent();
|
|
23
|
-
const suppliers = await itemLocator
|
|
24
|
-
.locator("xpath=//div[2]/p[1]")
|
|
25
|
-
.textContent();
|
|
26
|
-
const effectiveDate = await itemLocator
|
|
27
|
-
.locator("xpath=//div[2]/p[2]")
|
|
28
|
-
.textContent();
|
|
29
|
-
const supplierNumber = await itemLocator
|
|
30
|
-
.locator("xpath=//div[2]/p[3]")
|
|
31
|
-
.textContent();
|
|
32
|
-
const status = await itemLocator
|
|
33
|
-
.locator("xpath=//div[2]/div")
|
|
34
|
-
.textContent();
|
|
35
|
-
const link = await itemLocator.locator("a").getAttribute("href");
|
|
36
|
-
contractsList.push({
|
|
37
|
-
title: transformString(title),
|
|
38
|
-
suppliers,
|
|
39
|
-
effectiveDate: transformEffectiveDate(effectiveDate),
|
|
40
|
-
supplierNumber: transformSupplierNumber(supplierNumber),
|
|
41
|
-
status,
|
|
42
|
-
link,
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
return contractsList;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
function transformString(input) {
|
|
49
|
-
return input.replace(/ - Amendment #\d+/, "");
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
function transformEffectiveDate(input) {
|
|
53
|
-
return input.replace("Effective Date: ", "");
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
function transformSupplierNumber(input) {
|
|
57
|
-
return input.replace("Supplier Number: ", "");
|
|
58
|
-
}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { BrowserContext, Page } from "playwright-core";
|
|
2
|
-
import { extendPlaywrightPage } from "@intuned/sdk/playwright";
|
|
3
|
-
|
|
4
|
-
interface Params {
|
|
5
|
-
// Add your params here
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
export default async function handler(
|
|
9
|
-
params: Params,
|
|
10
|
-
_playwrightPage: Page,
|
|
11
|
-
context: BrowserContext
|
|
12
|
-
) {
|
|
13
|
-
const page = extendPlaywrightPage(_playwrightPage);
|
|
14
|
-
/**
|
|
15
|
-
* wait for url to be navigated to
|
|
16
|
-
*/
|
|
17
|
-
await page.goto("http://uitestingplayground.com");
|
|
18
|
-
const waitForUrl = page.waitForURL(/loaddelay/);
|
|
19
|
-
await page.getByRole("link", { name: "Load Delay" }).click();
|
|
20
|
-
await waitForUrl;
|
|
21
|
-
|
|
22
|
-
await page.waitForTimeout(2000);
|
|
23
|
-
/**
|
|
24
|
-
* wait for element to be visible
|
|
25
|
-
*/
|
|
26
|
-
await page.goto("http://uitestingplayground.com/clientdelay");
|
|
27
|
-
await page
|
|
28
|
-
.getByRole("button", { name: "Button Triggering Client Side Logic" })
|
|
29
|
-
.click();
|
|
30
|
-
await page.locator("#spinner").waitFor({ state: "hidden" });
|
|
31
|
-
console.log(await page.locator("#content").textContent());
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* wait for request to be done
|
|
35
|
-
*/
|
|
36
|
-
await page.goto("http://uitestingplayground.com/ajax");
|
|
37
|
-
const waitforResponse = page.waitForResponse(/ajaxdata/);
|
|
38
|
-
await page
|
|
39
|
-
.getByRole("button", { name: "Button Triggering AJAX Request" })
|
|
40
|
-
.click();
|
|
41
|
-
const response = await waitforResponse;
|
|
42
|
-
console.log(await response.text());
|
|
43
|
-
return "Done!";
|
|
44
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { BrowserContext, Page } from "playwright-core";
|
|
2
|
-
import { extendPlaywrightPage } from "@intuned/sdk/playwright";
|
|
3
|
-
|
|
4
|
-
interface Params {
|
|
5
|
-
// Add your params here
|
|
6
|
-
}
|
|
7
|
-
export default async function handler(
|
|
8
|
-
params: Params,
|
|
9
|
-
_playwrightPage: Page,
|
|
10
|
-
context: BrowserContext
|
|
11
|
-
) {
|
|
12
|
-
const page = extendPlaywrightPage(_playwrightPage);
|
|
13
|
-
|
|
14
|
-
return {};
|
|
15
|
-
}
|