@serenity-js/playwright 3.41.2 → 3.42.1
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/CHANGELOG.md +22 -0
- package/esm/ExtraBrowserContextOptions.d.ts +36 -0
- package/esm/ExtraBrowserContextOptions.d.ts.map +1 -0
- package/esm/ExtraBrowserContextOptions.js +2 -0
- package/esm/ExtraBrowserContextOptions.js.map +1 -0
- package/esm/index.d.ts +4 -0
- package/esm/index.d.ts.map +1 -0
- package/esm/index.js +4 -0
- package/esm/index.js.map +1 -0
- package/esm/screenplay/abilities/BrowseTheWebWithPlaywright.d.ts +163 -0
- package/esm/screenplay/abilities/BrowseTheWebWithPlaywright.d.ts.map +1 -0
- package/esm/screenplay/abilities/BrowseTheWebWithPlaywright.js +168 -0
- package/esm/screenplay/abilities/BrowseTheWebWithPlaywright.js.map +1 -0
- package/esm/screenplay/abilities/index.d.ts +2 -0
- package/esm/screenplay/abilities/index.d.ts.map +1 -0
- package/esm/screenplay/abilities/index.js +2 -0
- package/esm/screenplay/abilities/index.js.map +1 -0
- package/esm/screenplay/index.d.ts +3 -0
- package/esm/screenplay/index.d.ts.map +1 -0
- package/esm/screenplay/index.js +3 -0
- package/esm/screenplay/index.js.map +1 -0
- package/esm/screenplay/models/PlaywrightBrowsingSession.d.ts +32 -0
- package/esm/screenplay/models/PlaywrightBrowsingSession.d.ts.map +1 -0
- package/esm/screenplay/models/PlaywrightBrowsingSession.js +54 -0
- package/esm/screenplay/models/PlaywrightBrowsingSession.js.map +1 -0
- package/esm/screenplay/models/PlaywrightBrowsingSessionWithBrowser.d.ts +18 -0
- package/esm/screenplay/models/PlaywrightBrowsingSessionWithBrowser.d.ts.map +1 -0
- package/esm/screenplay/models/PlaywrightBrowsingSessionWithBrowser.js +38 -0
- package/esm/screenplay/models/PlaywrightBrowsingSessionWithBrowser.js.map +1 -0
- package/esm/screenplay/models/PlaywrightBrowsingSessionWithPage.d.ts +21 -0
- package/esm/screenplay/models/PlaywrightBrowsingSessionWithPage.d.ts.map +1 -0
- package/esm/screenplay/models/PlaywrightBrowsingSessionWithPage.js +44 -0
- package/esm/screenplay/models/PlaywrightBrowsingSessionWithPage.js.map +1 -0
- package/esm/screenplay/models/PlaywrightCookie.d.ts +15 -0
- package/esm/screenplay/models/PlaywrightCookie.d.ts.map +1 -0
- package/esm/screenplay/models/PlaywrightCookie.js +41 -0
- package/esm/screenplay/models/PlaywrightCookie.js.map +1 -0
- package/esm/screenplay/models/PlaywrightModalDialogHandler.d.ts +19 -0
- package/esm/screenplay/models/PlaywrightModalDialogHandler.d.ts.map +1 -0
- package/esm/screenplay/models/PlaywrightModalDialogHandler.js +48 -0
- package/esm/screenplay/models/PlaywrightModalDialogHandler.js.map +1 -0
- package/esm/screenplay/models/PlaywrightPage.d.ts +54 -0
- package/esm/screenplay/models/PlaywrightPage.d.ts.map +1 -0
- package/esm/screenplay/models/PlaywrightPage.js +190 -0
- package/esm/screenplay/models/PlaywrightPage.js.map +1 -0
- package/esm/screenplay/models/PlaywrightPageElement.d.ts +33 -0
- package/esm/screenplay/models/PlaywrightPageElement.d.ts.map +1 -0
- package/esm/screenplay/models/PlaywrightPageElement.js +198 -0
- package/esm/screenplay/models/PlaywrightPageElement.js.map +1 -0
- package/esm/screenplay/models/index.d.ts +8 -0
- package/esm/screenplay/models/index.d.ts.map +1 -0
- package/esm/screenplay/models/index.js +8 -0
- package/esm/screenplay/models/index.js.map +1 -0
- package/esm/screenplay/models/locators/PlaywrightLocator.d.ts +31 -0
- package/esm/screenplay/models/locators/PlaywrightLocator.d.ts.map +1 -0
- package/esm/screenplay/models/locators/PlaywrightLocator.js +166 -0
- package/esm/screenplay/models/locators/PlaywrightLocator.js.map +1 -0
- package/esm/screenplay/models/locators/PlaywrightRootLocator.d.ts +39 -0
- package/esm/screenplay/models/locators/PlaywrightRootLocator.d.ts.map +1 -0
- package/esm/screenplay/models/locators/PlaywrightRootLocator.js +48 -0
- package/esm/screenplay/models/locators/PlaywrightRootLocator.js.map +1 -0
- package/esm/screenplay/models/locators/index.d.ts +3 -0
- package/esm/screenplay/models/locators/index.d.ts.map +1 -0
- package/esm/screenplay/models/locators/index.js +3 -0
- package/esm/screenplay/models/locators/index.js.map +1 -0
- package/esm/screenplay/promised.d.ts +10 -0
- package/esm/screenplay/promised.d.ts.map +1 -0
- package/esm/screenplay/promised.js +12 -0
- package/esm/screenplay/promised.js.map +1 -0
- package/esm/selector-engines/PlaywrightSelectorEngine.d.ts +5 -0
- package/esm/selector-engines/PlaywrightSelectorEngine.d.ts.map +1 -0
- package/esm/selector-engines/PlaywrightSelectorEngine.js +2 -0
- package/esm/selector-engines/PlaywrightSelectorEngine.js.map +1 -0
- package/esm/selector-engines/SerenitySelectorEngines.d.ts +14 -0
- package/esm/selector-engines/SerenitySelectorEngines.d.ts.map +1 -0
- package/esm/selector-engines/SerenitySelectorEngines.js +40 -0
- package/esm/selector-engines/SerenitySelectorEngines.js.map +1 -0
- package/esm/selector-engines/index.d.ts +2 -0
- package/esm/selector-engines/index.d.ts.map +1 -0
- package/esm/selector-engines/index.js +2 -0
- package/esm/selector-engines/index.js.map +1 -0
- package/lib/index.d.ts +3 -3
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +3 -3
- package/lib/index.js.map +1 -1
- package/lib/package.json +1 -0
- package/lib/screenplay/abilities/BrowseTheWebWithPlaywright.d.ts +1 -1
- package/lib/screenplay/abilities/BrowseTheWebWithPlaywright.d.ts.map +1 -1
- package/lib/screenplay/abilities/BrowseTheWebWithPlaywright.js +3 -3
- package/lib/screenplay/abilities/BrowseTheWebWithPlaywright.js.map +1 -1
- package/lib/screenplay/abilities/index.d.ts +1 -1
- package/lib/screenplay/abilities/index.d.ts.map +1 -1
- package/lib/screenplay/abilities/index.js +1 -1
- package/lib/screenplay/abilities/index.js.map +1 -1
- package/lib/screenplay/index.d.ts +2 -2
- package/lib/screenplay/index.d.ts.map +1 -1
- package/lib/screenplay/index.js +2 -2
- package/lib/screenplay/index.js.map +1 -1
- package/lib/screenplay/models/PlaywrightBrowsingSession.d.ts +3 -3
- package/lib/screenplay/models/PlaywrightBrowsingSession.d.ts.map +1 -1
- package/lib/screenplay/models/PlaywrightBrowsingSession.js +7 -6
- package/lib/screenplay/models/PlaywrightBrowsingSession.js.map +1 -1
- package/lib/screenplay/models/PlaywrightBrowsingSessionWithBrowser.d.ts +3 -3
- package/lib/screenplay/models/PlaywrightBrowsingSessionWithBrowser.d.ts.map +1 -1
- package/lib/screenplay/models/PlaywrightBrowsingSessionWithBrowser.js +2 -2
- package/lib/screenplay/models/PlaywrightBrowsingSessionWithBrowser.js.map +1 -1
- package/lib/screenplay/models/PlaywrightBrowsingSessionWithPage.d.ts +3 -3
- package/lib/screenplay/models/PlaywrightBrowsingSessionWithPage.d.ts.map +1 -1
- package/lib/screenplay/models/PlaywrightBrowsingSessionWithPage.js +5 -5
- package/lib/screenplay/models/PlaywrightBrowsingSessionWithPage.js.map +1 -1
- package/lib/screenplay/models/PlaywrightPage.d.ts +3 -3
- package/lib/screenplay/models/PlaywrightPage.d.ts.map +1 -1
- package/lib/screenplay/models/PlaywrightPage.js +11 -11
- package/lib/screenplay/models/PlaywrightPage.js.map +1 -1
- package/lib/screenplay/models/PlaywrightPageElement.js +1 -1
- package/lib/screenplay/models/PlaywrightPageElement.js.map +1 -1
- package/lib/screenplay/models/index.d.ts +7 -7
- package/lib/screenplay/models/index.d.ts.map +1 -1
- package/lib/screenplay/models/index.js +7 -7
- package/lib/screenplay/models/index.js.map +1 -1
- package/lib/screenplay/models/locators/PlaywrightLocator.d.ts +1 -1
- package/lib/screenplay/models/locators/PlaywrightLocator.d.ts.map +1 -1
- package/lib/screenplay/models/locators/PlaywrightLocator.js +8 -8
- package/lib/screenplay/models/locators/PlaywrightLocator.js.map +1 -1
- package/lib/screenplay/models/locators/PlaywrightRootLocator.d.ts +2 -1
- package/lib/screenplay/models/locators/PlaywrightRootLocator.d.ts.map +1 -1
- package/lib/screenplay/models/locators/PlaywrightRootLocator.js +2 -2
- package/lib/screenplay/models/locators/PlaywrightRootLocator.js.map +1 -1
- package/lib/screenplay/models/locators/index.d.ts +2 -2
- package/lib/screenplay/models/locators/index.d.ts.map +1 -1
- package/lib/screenplay/models/locators/index.js +2 -2
- package/lib/screenplay/models/locators/index.js.map +1 -1
- package/lib/selector-engines/index.d.ts +1 -1
- package/lib/selector-engines/index.d.ts.map +1 -1
- package/lib/selector-engines/index.js +1 -1
- package/lib/selector-engines/index.js.map +1 -1
- package/package.json +25 -9
- package/src/index.ts +3 -3
- package/src/screenplay/abilities/BrowseTheWebWithPlaywright.ts +2 -2
- package/src/screenplay/abilities/index.ts +1 -1
- package/src/screenplay/index.ts +2 -2
- package/src/screenplay/models/PlaywrightBrowsingSession.ts +5 -4
- package/src/screenplay/models/PlaywrightBrowsingSessionWithBrowser.ts +3 -3
- package/src/screenplay/models/PlaywrightBrowsingSessionWithPage.ts +4 -4
- package/src/screenplay/models/PlaywrightPage.ts +8 -8
- package/src/screenplay/models/PlaywrightPageElement.ts +2 -2
- package/src/screenplay/models/index.ts +7 -7
- package/src/screenplay/models/locators/PlaywrightLocator.ts +4 -4
- package/src/screenplay/models/locators/PlaywrightRootLocator.ts +5 -2
- package/src/screenplay/models/locators/index.ts +2 -2
- package/src/selector-engines/SerenitySelectorEngines.ts +1 -1
- package/src/selector-engines/index.ts +1 -1
- package/tsconfig-cjs.build.json +18 -0
- package/tsconfig-esm.build.json +18 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlaywrightBrowsingSessionWithBrowser.js","sourceRoot":"","sources":["../../../src/screenplay/models/PlaywrightBrowsingSessionWithBrowser.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAG3E;;GAEG;AACH,MAAM,OAAO,oCAAqC,SAAQ,yBAAyB;IAGxD;IACA;IAFvB,YACuB,OAA2B,EAC3B,qBAAuD,EAC1E,0BAAsD,EACtD,SAA+B;QAE/B,KAAK,CAAC,0BAA0B,EAAE,SAAS,CAAC,CAAC;QAL1B,YAAO,GAAP,OAAO,CAAoB;QAC3B,0BAAqB,GAArB,qBAAqB,CAAkC;IAK9E,CAAC;IAEkB,KAAK,CAAC,oBAAoB;QACzC,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAC/D,CAAC;IAEkB,KAAK,CAAC,mBAAmB;QACxC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5C,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QAExB,iFAAiF;QACjF,iFAAiF;QACjF,8BAA8B;QAE9B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAA;QAEtC,OAAO,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAEQ,KAAK,CAAC,aAAa;QACxB,MAAM,KAAK,CAAC,aAAa,EAAE,CAAC;QAE5B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5C,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;IAEQ,KAAK,CAAC,mBAAmB;QAC9B,OAAO;YACH,WAAW,EAAG,IAAI,CAAC,OAAe,CAAC,YAAY,CAAC,IAAI,EAAI,4DAA4D;YACpH,YAAY,EAAE,OAAO,CAAC,QAAQ,EAA0B,gDAAgD;YACxG,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;SACzC,CAAA;IACL,CAAC;CACJ"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { BrowserCapabilities } from '@serenity-js/web';
|
|
2
|
+
import type * as playwright from 'playwright-core';
|
|
3
|
+
import type { ExtraBrowserContextOptions } from '../../ExtraBrowserContextOptions.js';
|
|
4
|
+
import { PlaywrightBrowsingSession } from './PlaywrightBrowsingSession.js';
|
|
5
|
+
import { PlaywrightPage } from './PlaywrightPage.js';
|
|
6
|
+
/**
|
|
7
|
+
* @group Models
|
|
8
|
+
*/
|
|
9
|
+
export declare class PlaywrightBrowsingSessionWithPage extends PlaywrightBrowsingSession {
|
|
10
|
+
protected readonly page: playwright.Page;
|
|
11
|
+
private readonly playwrightManagedPageId;
|
|
12
|
+
constructor(page: playwright.Page, browserContextOptions: ExtraBrowserContextOptions, selectors: playwright.Selectors);
|
|
13
|
+
protected registerCurrentPage(): Promise<PlaywrightPage>;
|
|
14
|
+
protected createBrowserContext(): Promise<playwright.BrowserContext>;
|
|
15
|
+
/**
|
|
16
|
+
* Closes any newly opened pages, leaving only the original one managed by Playwright Test.
|
|
17
|
+
*/
|
|
18
|
+
closeAllPages(): Promise<void>;
|
|
19
|
+
browserCapabilities(): Promise<BrowserCapabilities>;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=PlaywrightBrowsingSessionWithPage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlaywrightBrowsingSessionWithPage.d.ts","sourceRoot":"","sources":["../../../src/screenplay/models/PlaywrightBrowsingSessionWithPage.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,KAAK,KAAK,UAAU,MAAM,iBAAiB,CAAC;AAEnD,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AACtF,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD;;GAEG;AACH,qBAAa,iCAAkC,SAAQ,yBAAyB;IAIxE,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI;IAH5C,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAyC;gBAG1D,IAAI,EAAE,UAAU,CAAC,IAAI,EACxC,qBAAqB,EAAE,0BAA0B,EACjD,SAAS,EAAE,UAAU,CAAC,SAAS;cAKV,mBAAmB,IAAI,OAAO,CAAC,cAAc,CAAC;cAU9C,oBAAoB,IAAI,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC;IAInF;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAWrB,mBAAmB,IAAI,OAAO,CAAC,mBAAmB,CAAC;CAQrE"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { CorrelationId } from '@serenity-js/core/model';
|
|
2
|
+
import { PlaywrightBrowsingSession } from './PlaywrightBrowsingSession.js';
|
|
3
|
+
import { PlaywrightPage } from './PlaywrightPage.js';
|
|
4
|
+
/**
|
|
5
|
+
* @group Models
|
|
6
|
+
*/
|
|
7
|
+
export class PlaywrightBrowsingSessionWithPage extends PlaywrightBrowsingSession {
|
|
8
|
+
page;
|
|
9
|
+
playwrightManagedPageId = CorrelationId.create();
|
|
10
|
+
constructor(page, browserContextOptions, selectors) {
|
|
11
|
+
super(browserContextOptions, selectors);
|
|
12
|
+
this.page = page;
|
|
13
|
+
}
|
|
14
|
+
async registerCurrentPage() {
|
|
15
|
+
await this.browserContext();
|
|
16
|
+
const playwrightPage = new PlaywrightPage(this, this.page, this.extraBrowserContextOptions, this.playwrightManagedPageId);
|
|
17
|
+
this.register(playwrightPage);
|
|
18
|
+
return playwrightPage;
|
|
19
|
+
}
|
|
20
|
+
async createBrowserContext() {
|
|
21
|
+
return this.page.context();
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Closes any newly opened pages, leaving only the original one managed by Playwright Test.
|
|
25
|
+
*/
|
|
26
|
+
async closeAllPages() {
|
|
27
|
+
for (const page of this.pages.values()) {
|
|
28
|
+
if (!page.id.equals(this.playwrightManagedPageId)) {
|
|
29
|
+
await page.close();
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
this.pages.clear();
|
|
33
|
+
this.currentBrowserPage = undefined;
|
|
34
|
+
}
|
|
35
|
+
async browserCapabilities() {
|
|
36
|
+
const browser = this.page.context().browser();
|
|
37
|
+
return {
|
|
38
|
+
browserName: browser._initializer.name, // todo: raise a PR to Playwright to expose this information
|
|
39
|
+
platformName: process.platform, // todo: get the actual platform from Playwright
|
|
40
|
+
browserVersion: browser.version()
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=PlaywrightBrowsingSessionWithPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlaywrightBrowsingSessionWithPage.js","sourceRoot":"","sources":["../../../src/screenplay/models/PlaywrightBrowsingSessionWithPage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAKxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD;;GAEG;AACH,MAAM,OAAO,iCAAkC,SAAQ,yBAAyB;IAIrD;IAHN,uBAAuB,GAAkB,aAAa,CAAC,MAAM,EAAE,CAAC;IAEjF,YACuB,IAAqB,EACxC,qBAAiD,EACjD,SAA+B;QAE/B,KAAK,CAAC,qBAAqB,EAAE,SAAS,CAAC,CAAC;QAJrB,SAAI,GAAJ,IAAI,CAAiB;IAK5C,CAAC;IAEkB,KAAK,CAAC,mBAAmB;QACxC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,0BAA0B,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAE1H,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAE9B,OAAO,cAAc,CAAC;IAC1B,CAAC;IAEkB,KAAK,CAAC,oBAAoB;QACzC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa;QACf,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACrC,IAAI,CAAE,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;gBACjD,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;YACvB,CAAC;QACL,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;IACxC,CAAC;IAEQ,KAAK,CAAC,mBAAmB;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC;QAC9C,OAAO;YACH,WAAW,EAAG,OAAe,CAAC,YAAY,CAAC,IAAI,EAAI,4DAA4D;YAC/G,YAAY,EAAE,OAAO,CAAC,QAAQ,EAAqB,gDAAgD;YACnG,cAAc,EAAE,OAAO,CAAC,OAAO,EAAE;SACpC,CAAA;IACL,CAAC;CACJ"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { CookieData } from '@serenity-js/web';
|
|
2
|
+
import { Cookie } from '@serenity-js/web';
|
|
3
|
+
import type * as playwright from 'playwright-core';
|
|
4
|
+
/**
|
|
5
|
+
* Playwright-specific implementation of [`Cookie`](https://serenity-js.org/api/web/class/Cookie/).
|
|
6
|
+
*
|
|
7
|
+
* @group Models
|
|
8
|
+
*/
|
|
9
|
+
export declare class PlaywrightCookie extends Cookie {
|
|
10
|
+
private readonly context;
|
|
11
|
+
constructor(context: playwright.BrowserContext, cookieName: string);
|
|
12
|
+
delete(): Promise<void>;
|
|
13
|
+
protected read(): Promise<CookieData>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=PlaywrightCookie.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlaywrightCookie.d.ts","sourceRoot":"","sources":["../../../src/screenplay/models/PlaywrightCookie.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAsB,MAAM,kBAAkB,CAAC;AAC9D,OAAO,KAAK,KAAK,UAAU,MAAM,iBAAiB,CAAC;AAGnD;;;;GAIG;AACH,qBAAa,gBAAiB,SAAQ,MAAM;IAGpC,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,UAAU,CAAC,cAAc,EACnD,UAAU,EAAE,MAAM;IAMhB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;cASb,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC;CAqB9C"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Timestamp } from '@serenity-js/core';
|
|
2
|
+
import { Cookie, CookieMissingError } from '@serenity-js/web';
|
|
3
|
+
import { ensure, isDefined } from 'tiny-types';
|
|
4
|
+
/**
|
|
5
|
+
* Playwright-specific implementation of [`Cookie`](https://serenity-js.org/api/web/class/Cookie/).
|
|
6
|
+
*
|
|
7
|
+
* @group Models
|
|
8
|
+
*/
|
|
9
|
+
export class PlaywrightCookie extends Cookie {
|
|
10
|
+
context;
|
|
11
|
+
constructor(context, cookieName) {
|
|
12
|
+
super(cookieName);
|
|
13
|
+
this.context = context;
|
|
14
|
+
ensure('context', context, isDefined());
|
|
15
|
+
}
|
|
16
|
+
async delete() {
|
|
17
|
+
// see https://github.com/microsoft/playwright/issues/10143
|
|
18
|
+
const cookies = await this.context.cookies();
|
|
19
|
+
await this.context.clearCookies();
|
|
20
|
+
await this.context.addCookies(cookies.filter(cookie => cookie.name !== this.cookieName));
|
|
21
|
+
}
|
|
22
|
+
async read() {
|
|
23
|
+
const cookies = await this.context.cookies();
|
|
24
|
+
const found = cookies.find(cookie => cookie.name === this.cookieName);
|
|
25
|
+
if (!found) {
|
|
26
|
+
throw new CookieMissingError(`Cookie '${this.cookieName}' not set`);
|
|
27
|
+
}
|
|
28
|
+
return {
|
|
29
|
+
name: found.name,
|
|
30
|
+
value: found.value,
|
|
31
|
+
domain: found.domain,
|
|
32
|
+
path: found.path,
|
|
33
|
+
expiry: typeof found.expires === 'number' && found.expires >= 0
|
|
34
|
+
? Timestamp.fromTimestampInSeconds(Math.round(found.expires))
|
|
35
|
+
: undefined,
|
|
36
|
+
httpOnly: found.httpOnly,
|
|
37
|
+
secure: found.secure,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=PlaywrightCookie.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlaywrightCookie.js","sourceRoot":"","sources":["../../../src/screenplay/models/PlaywrightCookie.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAE9D,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE/C;;;;GAIG;AACH,MAAM,OAAO,gBAAiB,SAAQ,MAAM;IAGnB;IADrB,YACqB,OAAkC,EACnD,UAAkB;QAElB,KAAK,CAAC,UAAU,CAAC,CAAC;QAHD,YAAO,GAAP,OAAO,CAA2B;QAInD,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,MAAM;QACR,2DAA2D;QAC3D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAC7C,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;QAClC,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CACzB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,CAC5D,CAAC;IACN,CAAC;IAES,KAAK,CAAC,IAAI;QAChB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAE7C,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC;QAEtE,IAAI,CAAE,KAAK,EAAE,CAAC;YACV,MAAM,IAAI,kBAAkB,CAAC,WAAY,IAAI,CAAC,UAAW,WAAW,CAAC,CAAC;QAC1E,CAAC;QAED,OAAO;YACH,IAAI,EAAQ,KAAK,CAAC,IAAI;YACtB,KAAK,EAAO,KAAK,CAAC,KAAK;YACvB,MAAM,EAAM,KAAK,CAAC,MAAM;YACxB,IAAI,EAAQ,KAAK,CAAC,IAAI;YACtB,MAAM,EAAM,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC;gBAC/D,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC7D,CAAC,CAAC,SAAS;YACf,QAAQ,EAAI,KAAK,CAAC,QAAQ;YAC1B,MAAM,EAAM,KAAK,CAAC,MAAM;SAC3B,CAAA;IACL,CAAC;CACJ"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ModalDialogHandler } from '@serenity-js/web';
|
|
2
|
+
import type * as playwright from 'playwright-core';
|
|
3
|
+
/**
|
|
4
|
+
* Playwright-specific implementation of [`ModalDialogHandler`](https://serenity-js.org/api/web/class/ModalDialogHandler/).
|
|
5
|
+
*
|
|
6
|
+
* @group Models
|
|
7
|
+
*/
|
|
8
|
+
export declare class PlaywrightModalDialogHandler extends ModalDialogHandler {
|
|
9
|
+
private readonly page;
|
|
10
|
+
private readonly defaultHandler;
|
|
11
|
+
private currentHandler;
|
|
12
|
+
constructor(page: playwright.Page);
|
|
13
|
+
acceptNext(): Promise<void>;
|
|
14
|
+
acceptNextWithValue(text: string | number): Promise<void>;
|
|
15
|
+
dismissNext(): Promise<void>;
|
|
16
|
+
reset(): Promise<void>;
|
|
17
|
+
discard(): Promise<void>;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=PlaywrightModalDialogHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlaywrightModalDialogHandler.d.ts","sourceRoot":"","sources":["../../../src/screenplay/models/PlaywrightModalDialogHandler.ts"],"names":[],"mappings":"AACA,OAAO,EAAgE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACpH,OAAO,KAAK,KAAK,UAAU,MAAM,iBAAiB,CAAC;AAEnD;;;;GAIG;AACH,qBAAa,4BAA6B,SAAQ,kBAAkB;IAUpD,OAAO,CAAC,QAAQ,CAAC,IAAI;IARjC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAI1B;IAEL,OAAO,CAAC,cAAc,CAAsD;gBAE/C,IAAI,EAAE,UAAU,CAAC,IAAI;IAU5C,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAO3B,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOzD,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAO5B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAGjC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { AbsentModalDialog, AcceptedModalDialog, DismissedModalDialog, ModalDialogHandler } from '@serenity-js/web';
|
|
2
|
+
/**
|
|
3
|
+
* Playwright-specific implementation of [`ModalDialogHandler`](https://serenity-js.org/api/web/class/ModalDialogHandler/).
|
|
4
|
+
*
|
|
5
|
+
* @group Models
|
|
6
|
+
*/
|
|
7
|
+
export class PlaywrightModalDialogHandler extends ModalDialogHandler {
|
|
8
|
+
page;
|
|
9
|
+
defaultHandler = async (dialog) => {
|
|
10
|
+
await dialog.dismiss();
|
|
11
|
+
return new DismissedModalDialog(dialog.message());
|
|
12
|
+
};
|
|
13
|
+
currentHandler;
|
|
14
|
+
constructor(page) {
|
|
15
|
+
super();
|
|
16
|
+
this.page = page;
|
|
17
|
+
this.currentHandler = this.defaultHandler;
|
|
18
|
+
this.page.on('dialog', async (dialog) => {
|
|
19
|
+
this.modalDialog = await this.currentHandler(dialog);
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
async acceptNext() {
|
|
23
|
+
this.currentHandler = async (dialog) => {
|
|
24
|
+
await dialog.accept(dialog.defaultValue());
|
|
25
|
+
return new AcceptedModalDialog(dialog.message());
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
async acceptNextWithValue(text) {
|
|
29
|
+
this.currentHandler = async (dialog) => {
|
|
30
|
+
await dialog.accept(String(text));
|
|
31
|
+
return new AcceptedModalDialog(dialog.message());
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
async dismissNext() {
|
|
35
|
+
this.currentHandler = async (dialog) => {
|
|
36
|
+
await dialog.dismiss();
|
|
37
|
+
return new DismissedModalDialog(dialog.message());
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
async reset() {
|
|
41
|
+
this.modalDialog = new AbsentModalDialog();
|
|
42
|
+
this.currentHandler = this.defaultHandler;
|
|
43
|
+
}
|
|
44
|
+
async discard() {
|
|
45
|
+
this.page.off('dialog', this.currentHandler);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=PlaywrightModalDialogHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlaywrightModalDialogHandler.js","sourceRoot":"","sources":["../../../src/screenplay/models/PlaywrightModalDialogHandler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAGpH;;;;GAIG;AACH,MAAM,OAAO,4BAA6B,SAAQ,kBAAkB;IAUnC;IARZ,cAAc,GAC3B,KAAK,EAAE,MAAyB,EAAE,EAAE;QAChC,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACvB,OAAO,IAAI,oBAAoB,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IACtD,CAAC,CAAA;IAEG,cAAc,CAAsD;IAE5E,YAA6B,IAAqB;QAC9C,KAAK,EAAE,CAAC;QADiB,SAAI,GAAJ,IAAI,CAAiB;QAG9C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAE1C,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAyB,EAAE,EAAE;YACvD,IAAI,CAAC,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,UAAU;QACZ,IAAI,CAAC,cAAc,GAAG,KAAK,EAAE,MAAyB,EAAE,EAAE;YACtD,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;YAC3C,OAAO,IAAI,mBAAmB,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QACrD,CAAC,CAAA;IACL,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,IAAqB;QAC3C,IAAI,CAAC,cAAc,GAAG,KAAK,EAAE,MAAyB,EAAE,EAAE;YACtD,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YAClC,OAAO,IAAI,mBAAmB,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QACrD,CAAC,CAAA;IACL,CAAC;IAED,KAAK,CAAC,WAAW;QACb,IAAI,CAAC,cAAc,GAAG,KAAK,EAAE,MAAyB,EAAE,EAAE;YACtD,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;YACvB,OAAO,IAAI,oBAAoB,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QACtD,CAAC,CAAA;IACL,CAAC;IAED,KAAK,CAAC,KAAK;QACP,IAAI,CAAC,WAAW,GAAG,IAAI,iBAAiB,EAAE,CAAC;QAC3C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,OAAO;QACT,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IACjD,CAAC;CACJ"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { URL } from 'node:url';
|
|
2
|
+
import { type QuestionAdapter } from '@serenity-js/core';
|
|
3
|
+
import type { CorrelationId } from '@serenity-js/core/model';
|
|
4
|
+
import type { Cookie, CookieData, PageElements, Selector } from '@serenity-js/web';
|
|
5
|
+
import { Key, Page, PageElement } from '@serenity-js/web';
|
|
6
|
+
import type * as playwright from 'playwright-core';
|
|
7
|
+
import type { ExtraBrowserContextOptions } from '../../ExtraBrowserContextOptions.js';
|
|
8
|
+
import type { PlaywrightBrowsingSession } from './PlaywrightBrowsingSession.js';
|
|
9
|
+
/**
|
|
10
|
+
* Playwright-specific implementation of [`Page`](https://serenity-js.org/api/web/class/Page/).
|
|
11
|
+
*
|
|
12
|
+
* @group Models
|
|
13
|
+
*/
|
|
14
|
+
export declare class PlaywrightPage extends Page<playwright.Locator> {
|
|
15
|
+
private readonly page;
|
|
16
|
+
private readonly options;
|
|
17
|
+
private lastScriptExecutionSummary;
|
|
18
|
+
private dehydrator;
|
|
19
|
+
static current(): QuestionAdapter<PlaywrightPage>;
|
|
20
|
+
constructor(session: PlaywrightBrowsingSession, page: playwright.Page, options: Partial<Pick<ExtraBrowserContextOptions, 'defaultNavigationWaitUntil'>>, pageId: CorrelationId);
|
|
21
|
+
createPageElement(nativeElement: playwright.Locator): PageElement<playwright.Locator>;
|
|
22
|
+
locate(selector: Selector): PageElement<playwright.Locator>;
|
|
23
|
+
locateAll(selector: Selector): PageElements<playwright.Locator>;
|
|
24
|
+
navigateTo(destination: string): Promise<void>;
|
|
25
|
+
navigateBack(): Promise<void>;
|
|
26
|
+
navigateForward(): Promise<void>;
|
|
27
|
+
reload(): Promise<void>;
|
|
28
|
+
sendKeys(keys: (string | Key)[]): Promise<void>;
|
|
29
|
+
executeScript<Result, InnerArguments extends any[]>(script: string | ((...parameters: InnerArguments) => Result), ...args: InnerArguments): Promise<Result>;
|
|
30
|
+
executeAsyncScript<Result, InnerArguments extends any[]>(script: string | ((...args: [...parameters: InnerArguments, callback: (result: Result) => void]) => void), ...args: InnerArguments): Promise<Result>;
|
|
31
|
+
lastScriptExecutionResult<Result = any>(): Result;
|
|
32
|
+
takeScreenshot(): Promise<string>;
|
|
33
|
+
cookie(name: string): Promise<Cookie>;
|
|
34
|
+
setCookie(cookieData: CookieData): Promise<void>;
|
|
35
|
+
deleteAllCookies(): Promise<void>;
|
|
36
|
+
title(): Promise<string>;
|
|
37
|
+
name(): Promise<string>;
|
|
38
|
+
url(): Promise<URL>;
|
|
39
|
+
viewportSize(): Promise<{
|
|
40
|
+
width: number;
|
|
41
|
+
height: number;
|
|
42
|
+
}>;
|
|
43
|
+
setViewportSize(size: {
|
|
44
|
+
width: number;
|
|
45
|
+
height: number;
|
|
46
|
+
}): Promise<void>;
|
|
47
|
+
close(): Promise<void>;
|
|
48
|
+
closeOthers(): Promise<void>;
|
|
49
|
+
isPresent(): Promise<boolean>;
|
|
50
|
+
nativePage(): Promise<playwright.Page>;
|
|
51
|
+
private resetState;
|
|
52
|
+
private currentFrame;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=PlaywrightPage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlaywrightPage.d.ts","sourceRoot":"","sources":["../../../src/screenplay/models/PlaywrightPage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import { URL } from 'node:url';
|
|
2
|
+
import { List, LogicError } from '@serenity-js/core';
|
|
3
|
+
import { ArgumentDehydrator, BrowserWindowClosedError, ByDeepCss, Key, Page, PageElement, PageElementsLocator } from '@serenity-js/web';
|
|
4
|
+
import * as scripts from '@serenity-js/web/scripts';
|
|
5
|
+
import { promised } from '../promised.js';
|
|
6
|
+
import { PlaywrightExistingElementLocator, PlaywrightLocator, PlaywrightRootLocator } from './locators/index.js';
|
|
7
|
+
import { PlaywrightModalDialogHandler } from './PlaywrightModalDialogHandler.js';
|
|
8
|
+
import { PlaywrightPageElement } from './PlaywrightPageElement.js';
|
|
9
|
+
/**
|
|
10
|
+
* Playwright-specific implementation of [`Page`](https://serenity-js.org/api/web/class/Page/).
|
|
11
|
+
*
|
|
12
|
+
* @group Models
|
|
13
|
+
*/
|
|
14
|
+
export class PlaywrightPage extends Page {
|
|
15
|
+
page;
|
|
16
|
+
options;
|
|
17
|
+
lastScriptExecutionSummary;
|
|
18
|
+
dehydrator = new ArgumentDehydrator((item) => item instanceof PageElement, async (item) => {
|
|
19
|
+
const nativeElement = await item.nativeElement();
|
|
20
|
+
return nativeElement.elementHandle();
|
|
21
|
+
});
|
|
22
|
+
static current() {
|
|
23
|
+
return super.current();
|
|
24
|
+
}
|
|
25
|
+
constructor(session, page, options, pageId) {
|
|
26
|
+
super(session, new PlaywrightRootLocator(page), new PlaywrightModalDialogHandler(page), pageId);
|
|
27
|
+
this.page = page;
|
|
28
|
+
this.options = options;
|
|
29
|
+
}
|
|
30
|
+
createPageElement(nativeElement) {
|
|
31
|
+
return new PlaywrightPageElement(new PlaywrightExistingElementLocator(this.rootLocator, new ByDeepCss(nativeElement._selector), nativeElement));
|
|
32
|
+
}
|
|
33
|
+
locate(selector) {
|
|
34
|
+
return new PlaywrightPageElement(new PlaywrightLocator(this.rootLocator, selector));
|
|
35
|
+
}
|
|
36
|
+
locateAll(selector) {
|
|
37
|
+
return List.of(new PageElementsLocator(new PlaywrightLocator(this.rootLocator, selector)));
|
|
38
|
+
}
|
|
39
|
+
async navigateTo(destination) {
|
|
40
|
+
await this.page.goto(destination, { waitUntil: this.options?.defaultNavigationWaitUntil });
|
|
41
|
+
await this.resetState();
|
|
42
|
+
}
|
|
43
|
+
async navigateBack() {
|
|
44
|
+
await this.page.goBack({ waitUntil: this.options?.defaultNavigationWaitUntil });
|
|
45
|
+
await this.resetState();
|
|
46
|
+
}
|
|
47
|
+
async navigateForward() {
|
|
48
|
+
await this.page.goForward({ waitUntil: this.options?.defaultNavigationWaitUntil });
|
|
49
|
+
await this.resetState();
|
|
50
|
+
}
|
|
51
|
+
async reload() {
|
|
52
|
+
await this.page.reload({ waitUntil: this.options?.defaultNavigationWaitUntil });
|
|
53
|
+
await this.resetState();
|
|
54
|
+
}
|
|
55
|
+
async sendKeys(keys) {
|
|
56
|
+
const keySequence = keys.map(key => {
|
|
57
|
+
if (!Key.isKey(key)) {
|
|
58
|
+
return key;
|
|
59
|
+
}
|
|
60
|
+
return key.devtoolsName;
|
|
61
|
+
});
|
|
62
|
+
await this.page.keyboard.press(keySequence.join('+'));
|
|
63
|
+
}
|
|
64
|
+
async executeScript(script, ...args) {
|
|
65
|
+
const serialisedScript = typeof script === 'function'
|
|
66
|
+
? String(script)
|
|
67
|
+
: String(`function script() { ${script} }`);
|
|
68
|
+
const executableScript = new Function(`
|
|
69
|
+
const parameters = (${scripts.rehydrate}).apply(null, arguments[0]);
|
|
70
|
+
return (${serialisedScript}).apply(null, parameters);
|
|
71
|
+
`);
|
|
72
|
+
const dehydratedArguments = await this.dehydrator.dehydrate(args);
|
|
73
|
+
const result = await this.rootLocator.evaluate(executableScript, dehydratedArguments);
|
|
74
|
+
this.lastScriptExecutionSummary = new LastScriptExecutionSummary(result);
|
|
75
|
+
return result;
|
|
76
|
+
}
|
|
77
|
+
async executeAsyncScript(script, ...args) {
|
|
78
|
+
const serialisedScript = typeof script === 'function'
|
|
79
|
+
? String(script)
|
|
80
|
+
: String(`function script() { ${script} }`);
|
|
81
|
+
const executableScript = new Function(`
|
|
82
|
+
const parameters = (${scripts.rehydrate}).apply(null, arguments[0]);
|
|
83
|
+
|
|
84
|
+
return new Promise((resolve, reject) => {
|
|
85
|
+
try {
|
|
86
|
+
return (${serialisedScript}).apply(null, parameters.concat(resolve));
|
|
87
|
+
} catch (error) {
|
|
88
|
+
return reject(error);
|
|
89
|
+
}
|
|
90
|
+
})
|
|
91
|
+
`);
|
|
92
|
+
const dehydratedArguments = await this.dehydrator.dehydrate(args);
|
|
93
|
+
const result = await this.rootLocator.evaluate(executableScript, dehydratedArguments);
|
|
94
|
+
this.lastScriptExecutionSummary = new LastScriptExecutionSummary(result);
|
|
95
|
+
return result;
|
|
96
|
+
}
|
|
97
|
+
lastScriptExecutionResult() {
|
|
98
|
+
if (!this.lastScriptExecutionSummary) {
|
|
99
|
+
throw new LogicError(`Make sure to execute a script before checking on the result`);
|
|
100
|
+
}
|
|
101
|
+
return this.lastScriptExecutionSummary.result;
|
|
102
|
+
}
|
|
103
|
+
async takeScreenshot() {
|
|
104
|
+
try {
|
|
105
|
+
const screenshot = await this.page.screenshot();
|
|
106
|
+
return screenshot.toString('base64');
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
if (error?.message.includes('Target page, context or browser has been closed')) {
|
|
110
|
+
throw new BrowserWindowClosedError(`Couldn't take screenshot since the browser window is already closed`, error);
|
|
111
|
+
}
|
|
112
|
+
throw error;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
async cookie(name) {
|
|
116
|
+
return this.session.cookie(name);
|
|
117
|
+
}
|
|
118
|
+
async setCookie(cookieData) {
|
|
119
|
+
const url = await this.page.url();
|
|
120
|
+
const cookie = {
|
|
121
|
+
name: cookieData.name,
|
|
122
|
+
value: cookieData.value,
|
|
123
|
+
domain: cookieData.domain,
|
|
124
|
+
path: cookieData.path,
|
|
125
|
+
url: !(cookieData.domain && cookieData.path)
|
|
126
|
+
? url
|
|
127
|
+
: undefined,
|
|
128
|
+
secure: cookieData.secure,
|
|
129
|
+
httpOnly: cookieData.httpOnly,
|
|
130
|
+
expires: cookieData.expiry
|
|
131
|
+
? cookieData.expiry.toSeconds()
|
|
132
|
+
: undefined,
|
|
133
|
+
sameSite: cookieData.sameSite,
|
|
134
|
+
};
|
|
135
|
+
return this.session.setCookie(cookie);
|
|
136
|
+
}
|
|
137
|
+
async deleteAllCookies() {
|
|
138
|
+
await this.session.deleteAllCookies();
|
|
139
|
+
}
|
|
140
|
+
async title() {
|
|
141
|
+
const currentFrame = await this.currentFrame();
|
|
142
|
+
return currentFrame.title();
|
|
143
|
+
}
|
|
144
|
+
async name() {
|
|
145
|
+
const currentFrame = await this.currentFrame();
|
|
146
|
+
return currentFrame.evaluate(() => window.name);
|
|
147
|
+
}
|
|
148
|
+
async url() {
|
|
149
|
+
const currentFrame = await this.currentFrame();
|
|
150
|
+
return new URL(currentFrame.url());
|
|
151
|
+
}
|
|
152
|
+
async viewportSize() {
|
|
153
|
+
return this.page.viewportSize();
|
|
154
|
+
}
|
|
155
|
+
async setViewportSize(size) {
|
|
156
|
+
await this.page.setViewportSize(size);
|
|
157
|
+
}
|
|
158
|
+
async close() {
|
|
159
|
+
await this.resetState();
|
|
160
|
+
await this.modalDialogHandler.discard();
|
|
161
|
+
await this.page.close();
|
|
162
|
+
}
|
|
163
|
+
async closeOthers() {
|
|
164
|
+
await this.session.closePagesOtherThan(this);
|
|
165
|
+
}
|
|
166
|
+
isPresent() {
|
|
167
|
+
return promised(!this.page.isClosed());
|
|
168
|
+
}
|
|
169
|
+
async nativePage() {
|
|
170
|
+
return promised(this.page);
|
|
171
|
+
}
|
|
172
|
+
async resetState() {
|
|
173
|
+
this.lastScriptExecutionSummary = undefined;
|
|
174
|
+
await this.rootLocator.switchToMainFrame();
|
|
175
|
+
await this.modalDialogHandler.reset();
|
|
176
|
+
}
|
|
177
|
+
async currentFrame() {
|
|
178
|
+
return await this.rootLocator.nativeElement();
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* @package
|
|
183
|
+
*/
|
|
184
|
+
class LastScriptExecutionSummary {
|
|
185
|
+
result;
|
|
186
|
+
constructor(result) {
|
|
187
|
+
this.result = result;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=PlaywrightPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlaywrightPage.js","sourceRoot":"","sources":["../../../src/screenplay/models/PlaywrightPage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { SwitchableOrigin } from '@serenity-js/web';
|
|
2
|
+
import { PageElement, SelectOption } from '@serenity-js/web';
|
|
3
|
+
import type * as playwright from 'playwright-core';
|
|
4
|
+
/**
|
|
5
|
+
* Playwright-specific implementation of [`PageElement`](https://serenity-js.org/api/web/class/PageElement/).
|
|
6
|
+
*
|
|
7
|
+
* @group Models
|
|
8
|
+
*/
|
|
9
|
+
export declare class PlaywrightPageElement extends PageElement<playwright.Locator> {
|
|
10
|
+
of(parent: PageElement<playwright.Locator>): PageElement<playwright.Locator>;
|
|
11
|
+
closestTo(child: PageElement<playwright.Locator>): PageElement<playwright.Locator>;
|
|
12
|
+
enterValue(value: string | number | Array<string | number>): Promise<void>;
|
|
13
|
+
clearValue(): Promise<void>;
|
|
14
|
+
click(): Promise<void>;
|
|
15
|
+
doubleClick(): Promise<void>;
|
|
16
|
+
scrollIntoView(): Promise<void>;
|
|
17
|
+
hoverOver(): Promise<void>;
|
|
18
|
+
rightClick(): Promise<void>;
|
|
19
|
+
selectOptions(...options: Array<SelectOption>): Promise<void>;
|
|
20
|
+
selectedOptions(): Promise<Array<SelectOption>>;
|
|
21
|
+
dragTo(destination: PageElement<playwright.Locator>): Promise<void>;
|
|
22
|
+
attribute(name: string): Promise<string>;
|
|
23
|
+
text(): Promise<string>;
|
|
24
|
+
value(): Promise<string>;
|
|
25
|
+
html(): Promise<string>;
|
|
26
|
+
switchTo(): Promise<SwitchableOrigin>;
|
|
27
|
+
isActive(): Promise<boolean>;
|
|
28
|
+
isClickable(): Promise<boolean>;
|
|
29
|
+
isEnabled(): Promise<boolean>;
|
|
30
|
+
isSelected(): Promise<boolean>;
|
|
31
|
+
isVisible(): Promise<boolean>;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=PlaywrightPageElement.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlaywrightPageElement.d.ts","sourceRoot":"","sources":["../../../src/screenplay/models/PlaywrightPageElement.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAE7D,OAAO,KAAK,KAAK,UAAU,MAAM,iBAAiB,CAAC;AAKnD;;;;GAIG;AACH,qBAAa,qBAAsB,SAAQ,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC;IACtE,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC;IAI5E,SAAS,CAAC,KAAK,EAAE,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC;IAI5E,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAO1E,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAU3B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAK/B,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAK1B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAK3B,aAAa,CAAC,GAAG,OAAO,EAAE,KAAK,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAa7D,eAAe,IAAI,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAsB/C,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAUnE,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKxC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAKvB,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAKxB,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAKvB,QAAQ,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAmCrC,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC;IAW5B,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAW/B,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAS7B,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAkB9B,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;CActC"}
|