@salesforcedevs/sfdocs-e2e 0.6.132-linkfix-alpha
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +63 -0
- package/bin/run-e2e.js +115 -0
- package/common-wdio.conf.js +402 -0
- package/package.json +40 -0
- package/portal-wdio.conf.js +7 -0
- package/search-wdio.conf.js +10 -0
- package/src/content-repo/pageobjects/home.page.ts +55 -0
- package/src/content-repo/specs/componentSpecification.test.ts +287 -0
- package/src/content-repo/specs/guideAndReferencePage.test.ts +46 -0
- package/src/content-repo/specs/homepage.test.ts +47 -0
- package/src/content-repo/specs/media-mapper.test.ts +18 -0
- package/src/content-repo/specs/navHeader.test.ts +79 -0
- package/src/content-repo/specs/sitemap.test.ts +58 -0
- package/src/content-repo/specs/tabset.test.ts +81 -0
- package/src/portal/pageobjects/docs.apis.page.ts +23 -0
- package/src/portal/pageobjects/docs.page.ts +18 -0
- package/src/portal/pageobjects/help-page/ScopeSeachTest.page.ts +20 -0
- package/src/portal/specs/docs.api.test.ts +68 -0
- package/src/portal/specs/docs.test.ts +84 -0
- package/src/portal/specs/media-mapper.test.ts +42 -0
- package/src/portal/specs/scope.search.guide.test.ts +33 -0
- package/src/portal/specs/scope.search.reference.test.ts +37 -0
- package/src/shared/pageobjects/api-redoc-reference.page.ts +40 -0
- package/src/shared/pageobjects/callout.ts +24 -0
- package/src/shared/pageobjects/doc-phase-config.ts +106 -0
- package/src/shared/pageobjects/docs-content-layout.ts +17 -0
- package/src/shared/pageobjects/error.page.ts +14 -0
- package/src/shared/pageobjects/guide.page.ts +24 -0
- package/src/shared/pageobjects/overview.page.ts +20 -0
- package/src/shared/pageobjects/page.ts +115 -0
- package/src/shared/pageobjects/reference.page.ts +41 -0
- package/src/shared/specs/anchorHeading.test.ts +21 -0
- package/src/shared/specs/banner.test.ts +66 -0
- package/src/shared/specs/breadcrumbs.test.ts +45 -0
- package/src/shared/specs/calloutContent.test.ts +102 -0
- package/src/shared/specs/codeBlock.test.ts +44 -0
- package/src/shared/specs/devCenterLink.test.ts +42 -0
- package/src/shared/specs/docPhase.test.ts +127 -0
- package/src/shared/specs/errorRoutes.test.ts +24 -0
- package/src/shared/specs/guides.test.ts +333 -0
- package/src/shared/specs/layout-tests.ts +38 -0
- package/src/shared/specs/overview.test.ts +82 -0
- package/src/shared/specs/page-title.test.ts +12 -0
- package/src/shared/specs/redoc-reference.test.ts +170 -0
- package/src/shared/specs/reference.test.ts +281 -0
- package/src/shared/specs/video.test.ts +31 -0
- package/static-portal-wdio.conf.js +50 -0
- package/tsconfig.json +26 -0
- package/wdio.conf.js +6 -0
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
import { it } from 'mocha';
|
|
2
|
+
import { ReferencePage } from '../pageobjects/reference.page';
|
|
3
|
+
import GuidePage from '../pageobjects/guide.page';
|
|
4
|
+
import layoutTest from './layout-tests';
|
|
5
|
+
|
|
6
|
+
let referencePage: ReferencePage;
|
|
7
|
+
describe('API Pages', () => {
|
|
8
|
+
describe('API References', () => {
|
|
9
|
+
beforeEach(async () => {
|
|
10
|
+
referencePage = new ReferencePage('/docs/commerce/test-cc-orders-api/references');
|
|
11
|
+
referencePage.open();
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
layoutTest(referencePage, 'doc-header');
|
|
15
|
+
|
|
16
|
+
it('should have the right title', async () => {
|
|
17
|
+
expect(browser).toHaveTitle('TEST Commerce Cloud Orders APIs');
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
it('renders the banner and header with correct text', async () => {
|
|
21
|
+
const apiTitle = await referencePage.getApiTitle();
|
|
22
|
+
const titleText = await apiTitle.getText();
|
|
23
|
+
|
|
24
|
+
expect(titleText).toMatch('Orders');
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
it('should highlight References in Nav tab', async () => {
|
|
28
|
+
const selectedHeaderNavItem = await referencePage.getActiveNavTab();
|
|
29
|
+
|
|
30
|
+
expect(await selectedHeaderNavItem.getText()).toMatch('Reference');
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
it('Highlight the first element in the sidebar ; Summary', async () => {
|
|
34
|
+
const selectedSideBar = await referencePage.getSidebarContent();
|
|
35
|
+
|
|
36
|
+
expect(await selectedSideBar.getText()).toMatch('Summary');
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
describe('Test Reference page transition> ', () => {
|
|
42
|
+
it('Check Guide to Reference page Transition', async () => {
|
|
43
|
+
const page = new GuidePage(
|
|
44
|
+
'/docs/commerce/test-cc-orders-api/guide/commerce-cloud-api-overview.html',
|
|
45
|
+
);
|
|
46
|
+
page.open();
|
|
47
|
+
await page.waitPageLoad();
|
|
48
|
+
await (await $('>>> h1#overview')).waitForDisplayed();
|
|
49
|
+
const docHeaderNav = await $('>>> .header_l2_group-nav_overflow');
|
|
50
|
+
const headerNav = await docHeaderNav.$('>>> dx-header-nav');
|
|
51
|
+
const navItem = await headerNav.shadow$$('nav > ul > li');
|
|
52
|
+
expect(navItem.length).toEqual(3);
|
|
53
|
+
const dxHeaderNavOpt = await navItem[2].$('dx-tab');
|
|
54
|
+
const referenceAnchor = await dxHeaderNavOpt.shadow$('a');
|
|
55
|
+
expect(await referenceAnchor.getAttribute('href')).toContain(
|
|
56
|
+
'docs/commerce/test-cc-orders-api/references',
|
|
57
|
+
);
|
|
58
|
+
expect(await (await referenceAnchor.$('span')).getText()).toEqual('Reference');
|
|
59
|
+
await navItem[2].click();
|
|
60
|
+
const header = await $('>>>doc-header');
|
|
61
|
+
await header.waitForDisplayed();
|
|
62
|
+
expect(await referenceAnchor.getAttribute('class')).toContain('nav-list-item state-active');
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
describe('API References Breadcrumbs', () => {
|
|
67
|
+
it('should show breadcrumbs properly', async () => {
|
|
68
|
+
referencePage = new ReferencePage(
|
|
69
|
+
'/docs/commerce/flex-references-vers/references/manual-ref/find-sfra-tools.html',
|
|
70
|
+
);
|
|
71
|
+
referencePage.open();
|
|
72
|
+
await referencePage.waitForMarkdownBasedReferencePageLoad();
|
|
73
|
+
|
|
74
|
+
const anchorBreadcrumb = await $('>>>doc-breadcrumbs doc-breadcrumb-item a');
|
|
75
|
+
const currentPageBreadcrumb = await $('>>>doc-breadcrumbs doc-breadcrumb-item span');
|
|
76
|
+
|
|
77
|
+
expect(anchorBreadcrumb).not.toBeNull();
|
|
78
|
+
expect(await anchorBreadcrumb.getText()).toBe('Get Started');
|
|
79
|
+
expect(currentPageBreadcrumb).not.toBeNull();
|
|
80
|
+
expect(await currentPageBreadcrumb.getText()).toBe('Find SFRA Tools');
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
describe('Reference Versioning', () => {
|
|
85
|
+
beforeEach(async () => {
|
|
86
|
+
referencePage = new ReferencePage('/docs/c-cart-apis/references/ref1?meta=Summary');
|
|
87
|
+
referencePage.open();
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
it('should check for the presence of version picker dropdown', async () => {
|
|
91
|
+
const versionBtn = await $('>>>.version-picker-button');
|
|
92
|
+
await versionBtn.waitForDisplayed();
|
|
93
|
+
|
|
94
|
+
expect(versionBtn.isExisting()).toBeTruthy();
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
it('should check for the default version in the version picker dropdown', async () => {
|
|
98
|
+
const versionText = await (await $('>>>p.selected-version-label')).getText();
|
|
99
|
+
|
|
100
|
+
expect(versionText).toEqual('0.1.3');
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
it('should check for all the versions in the version picker dropdown', async () => {
|
|
104
|
+
const versionBtn = await $('>>>.version-picker-button');
|
|
105
|
+
await versionBtn.waitForDisplayed();
|
|
106
|
+
await versionBtn.click();
|
|
107
|
+
const versionOptions = await $$('>>>doc-version-picker dx-dropdown-option');
|
|
108
|
+
|
|
109
|
+
expect(versionOptions.length).toEqual(2);
|
|
110
|
+
expect(await (await versionOptions[0].shadow$('div>div')).getText()).toEqual('0.1.3');
|
|
111
|
+
expect(await (await versionOptions[1].shadow$('div>div')).getText()).toEqual('0.1.2');
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
it('select an endpoint and change the version in version picker dropdown, it should navigate to summary', async () => {
|
|
115
|
+
const dxInput = await $('>>>dx-input.search-box');
|
|
116
|
+
const searchBox = await dxInput.shadow$('input');
|
|
117
|
+
|
|
118
|
+
await searchBox.click();
|
|
119
|
+
await browser.keys('/cart-coupons');
|
|
120
|
+
|
|
121
|
+
const dxTreeItems = await $$('>>>dx-tree-item');
|
|
122
|
+
|
|
123
|
+
expect(dxTreeItems.length > 2).toBeTruthy();
|
|
124
|
+
|
|
125
|
+
await (await dxTreeItems[2]).click();
|
|
126
|
+
|
|
127
|
+
const versionBtn = await $('>>>.version-picker-button');
|
|
128
|
+
|
|
129
|
+
await versionBtn.waitForDisplayed();
|
|
130
|
+
await versionBtn.click();
|
|
131
|
+
|
|
132
|
+
const versionOptions = await $$('>>>doc-version-picker dx-dropdown-option');
|
|
133
|
+
|
|
134
|
+
await versionOptions[1].waitForClickable();
|
|
135
|
+
await versionOptions[1].click();
|
|
136
|
+
await browser.pause(1000);
|
|
137
|
+
|
|
138
|
+
const apiTitle = await (await $('>>>div.api-title span')).getText();
|
|
139
|
+
const apiVersion = await (await $('>>>p.version span')).getText();
|
|
140
|
+
|
|
141
|
+
expect(apiTitle).toEqual('Salesforce Connect API');
|
|
142
|
+
expect(apiVersion).toEqual('53.0');
|
|
143
|
+
});
|
|
144
|
+
|
|
145
|
+
it('Change the version in version picker dropdown, url should have the selected version', async () => {
|
|
146
|
+
const versionPicker = await $('>>>.version-picker-button');
|
|
147
|
+
|
|
148
|
+
await versionPicker.waitForDisplayed();
|
|
149
|
+
await versionPicker.click();
|
|
150
|
+
|
|
151
|
+
const versionOptions = await $$('>>>doc-version-picker dx-dropdown-option');
|
|
152
|
+
const selectedVersionText = await (await versionOptions[1].shadow$('div>div')).getText();
|
|
153
|
+
|
|
154
|
+
await versionOptions[1].click();
|
|
155
|
+
|
|
156
|
+
const url = await browser.getUrl();
|
|
157
|
+
expect(url).toContain(selectedVersionText);
|
|
158
|
+
});
|
|
159
|
+
|
|
160
|
+
it('should check for the latest versioned reference title', async () => {
|
|
161
|
+
referencePage = new ReferencePage(
|
|
162
|
+
'/docs/commerce/flex-references-vers/references/manual-ref',
|
|
163
|
+
);
|
|
164
|
+
|
|
165
|
+
referencePage.open();
|
|
166
|
+
await referencePage.waitForMarkdownBasedReferencePageLoad();
|
|
167
|
+
|
|
168
|
+
const title = await $('>>>h1');
|
|
169
|
+
const titleText = await title.getText();
|
|
170
|
+
|
|
171
|
+
expect(titleText).toEqual('Overview');
|
|
172
|
+
});
|
|
173
|
+
|
|
174
|
+
it('change the version and check whether the page is navigated to the respective spec-based reference endpoint', async () => {
|
|
175
|
+
referencePage = new ReferencePage(
|
|
176
|
+
'/docs/commerce/flex-references-vers/references/spec-ref?meta=createBasket',
|
|
177
|
+
);
|
|
178
|
+
referencePage.open();
|
|
179
|
+
|
|
180
|
+
await referencePage.waitForSpecBasedReferencePageLoad();
|
|
181
|
+
await referencePage.selectVersion();
|
|
182
|
+
|
|
183
|
+
const container = await $('>>>div.title-area div');
|
|
184
|
+
const apiTitle = await container.getText();
|
|
185
|
+
|
|
186
|
+
expect(apiTitle).toEqual('createBasket');
|
|
187
|
+
});
|
|
188
|
+
});
|
|
189
|
+
|
|
190
|
+
describe('Markdown-Based Flexible References', () => {
|
|
191
|
+
let referencePage: ReferencePage;
|
|
192
|
+
|
|
193
|
+
it('should check for markdown-based reference default first topic', async () => {
|
|
194
|
+
referencePage = new ReferencePage(
|
|
195
|
+
'/docs/commerce/flexible-references/references/shopper-manual-ref',
|
|
196
|
+
);
|
|
197
|
+
referencePage.open();
|
|
198
|
+
await referencePage.waitForMarkdownBasedReferencePageLoad();
|
|
199
|
+
|
|
200
|
+
const title = await $('h1');
|
|
201
|
+
const titleText = await title.getText();
|
|
202
|
+
|
|
203
|
+
expect(titleText).toEqual('Overview');
|
|
204
|
+
});
|
|
205
|
+
|
|
206
|
+
it('change the markdown-based reference topic and check whether the page is rendered', async () => {
|
|
207
|
+
referencePage = new ReferencePage(
|
|
208
|
+
'/docs/commerce/flexible-references/references/shopper-manual-ref',
|
|
209
|
+
);
|
|
210
|
+
referencePage.open();
|
|
211
|
+
await referencePage.waitForMarkdownBasedReferencePageLoad();
|
|
212
|
+
|
|
213
|
+
const dxInput = await $('>>>dx-input.search-box');
|
|
214
|
+
const searchBox = await dxInput.shadow$('input');
|
|
215
|
+
await searchBox.click();
|
|
216
|
+
await browser.keys('Change Shipping Address');
|
|
217
|
+
await browser.pause(1000);
|
|
218
|
+
const sidebar = await (await $('>>>doc-content-layout')).shadow$('div > dx-sidebar-old');
|
|
219
|
+
const sideBarContent = await sidebar.shadow$$('div.container div.sidebar-content dx-tree');
|
|
220
|
+
expect(sideBarContent.length).toEqual(1);
|
|
221
|
+
const tile = await (
|
|
222
|
+
await sideBarContent[0].shadow$('dx-tree-item')
|
|
223
|
+
).shadow$('dx-tree-tile');
|
|
224
|
+
expect(tile.isExisting()).toBeTruthy();
|
|
225
|
+
await (await sideBarContent[0].shadow$('dx-tree-item')).click();
|
|
226
|
+
await referencePage.waitForMarkdownBasedReferencePageLoad();
|
|
227
|
+
const title = await $('>>>h1');
|
|
228
|
+
const titleText = await title.getText();
|
|
229
|
+
const codeBlock = await $('div.custom-code-block');
|
|
230
|
+
|
|
231
|
+
expect(titleText).toEqual('Update Your Order');
|
|
232
|
+
expect(codeBlock).toBeTruthy();
|
|
233
|
+
});
|
|
234
|
+
});
|
|
235
|
+
|
|
236
|
+
describe('Localized Markdown-Based Flexible References', () => {
|
|
237
|
+
it('should check for localized markdown-based reference ', async () => {
|
|
238
|
+
referencePage = new ReferencePage(
|
|
239
|
+
'/docs/commerce/ja-jp/flex-references-loc/references/manual-ref/commerce-cloud-api-overview.html',
|
|
240
|
+
);
|
|
241
|
+
referencePage.open();
|
|
242
|
+
await referencePage.waitForMarkdownBasedReferencePageLoad();
|
|
243
|
+
|
|
244
|
+
const languageDropdown = await $('>>>dx-dropdown');
|
|
245
|
+
expect(languageDropdown).toBeDefined();
|
|
246
|
+
|
|
247
|
+
const languages = await languageDropdown.$$('>>>dx-dropdown-option');
|
|
248
|
+
expect(languages.length).toBe(2);
|
|
249
|
+
|
|
250
|
+
const title = await $('>>>h1');
|
|
251
|
+
const titleText = await title.getText();
|
|
252
|
+
|
|
253
|
+
expect(titleText).toEqual('概要');
|
|
254
|
+
});
|
|
255
|
+
});
|
|
256
|
+
|
|
257
|
+
describe('Spec-Based Flexible References', () => {
|
|
258
|
+
it('should check for the spec-based reference summary', async () => {
|
|
259
|
+
referencePage = new ReferencePage('/docs/commerce/flexible-references/references/spec-ref');
|
|
260
|
+
referencePage.open();
|
|
261
|
+
await referencePage.waitForSpecBasedReferencePageLoad();
|
|
262
|
+
|
|
263
|
+
const apiTitle = await referencePage.getApiTitle();
|
|
264
|
+
const titleText = await apiTitle.getText();
|
|
265
|
+
|
|
266
|
+
expect(titleText).toEqual('Shopper Baskets');
|
|
267
|
+
});
|
|
268
|
+
|
|
269
|
+
it('change the spec-based reference endpoint and check whether the page is rendered', async () => {
|
|
270
|
+
referencePage = new ReferencePage(
|
|
271
|
+
'/docs/commerce/flexible-references/references/spec-ref?meta=getBasket',
|
|
272
|
+
);
|
|
273
|
+
referencePage.open();
|
|
274
|
+
await referencePage.waitForSpecBasedReferencePageLoad();
|
|
275
|
+
|
|
276
|
+
const container = await $('>>>div.title-area div');
|
|
277
|
+
const apiTitle = await container.getText();
|
|
278
|
+
|
|
279
|
+
expect(apiTitle).toEqual('getBasket');
|
|
280
|
+
});
|
|
281
|
+
});
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import Page from '../pageobjects/page';
|
|
2
|
+
let page: Page;
|
|
3
|
+
|
|
4
|
+
describe('Video Plugin Scenarios ', () => {
|
|
5
|
+
beforeEach(async () => {
|
|
6
|
+
page = new Page('docs/commerce/test-cc-orders-api/guide/change-shipping-address.html');
|
|
7
|
+
page.open();
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
it('Should render the vidyard video ', async () => {
|
|
11
|
+
const videoRootElement = await $('>>>.video-plugin-div');
|
|
12
|
+
const videoTitle = await videoRootElement.$('.video-plugin-title');
|
|
13
|
+
expect(await videoTitle.getText()).toBe('Video from VidYard');
|
|
14
|
+
const videoContainer = await videoRootElement.$('.video-plugin-container');
|
|
15
|
+
const videoHref = await videoContainer.$('a');
|
|
16
|
+
expect(await videoHref.getAttribute('href')).toBe(
|
|
17
|
+
'https://www.vidyard.com/free-screen-record?utm_source=vidyard-player&utm_medium=product&utm_campaign=powered_by',
|
|
18
|
+
);
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
it('Should render the youtube video', async () => {
|
|
22
|
+
const videoRootElement = await $$('>>>.video-plugin-div')[1];
|
|
23
|
+
const videoTitle = await videoRootElement?.$('.video-plugin-title');
|
|
24
|
+
expect(await videoTitle?.getText()).toBe('Video from YouTube');
|
|
25
|
+
const videoContainer = await videoRootElement?.$('.video-plugin-container');
|
|
26
|
+
const iframeElement = await videoContainer?.$('iframe');
|
|
27
|
+
expect(await iframeElement?.getAttribute('src')).toBe(
|
|
28
|
+
'https://youtube.com/embed/di6iwHhrH6s',
|
|
29
|
+
);
|
|
30
|
+
});
|
|
31
|
+
});
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WebdriverIO configuration for E2E tests on Static Portal Pages (SSG)
|
|
3
|
+
*
|
|
4
|
+
* Prerequisites:
|
|
5
|
+
* 1. Build static pages: yarn build:static:portal
|
|
6
|
+
* 2. Start static server: yarn start:static:portal (runs on port 3000)
|
|
7
|
+
* 3. Run tests: yarn test:e2e:static:portal
|
|
8
|
+
*/
|
|
9
|
+
const BASE_CONFIG = require('./common-wdio.conf');
|
|
10
|
+
|
|
11
|
+
exports.config = {
|
|
12
|
+
...BASE_CONFIG.config,
|
|
13
|
+
// Static pages are served on port 3000 by default; override via E2E_BASE_URL env var
|
|
14
|
+
baseUrl: process.env.E2E_BASE_URL || 'http://localhost:3000',
|
|
15
|
+
|
|
16
|
+
// Reuse the same portal specs - static pages have the same URL structure
|
|
17
|
+
specs: ['./src/portal/specs/**/*.test.ts', './src/shared/specs/*.test.ts'],
|
|
18
|
+
|
|
19
|
+
// Exclude tests that require dynamic server features or pages not in static build
|
|
20
|
+
exclude: [
|
|
21
|
+
// /docs/apis landing page doesn't exist in static builds
|
|
22
|
+
'./src/portal/specs/docs.api.test.ts',
|
|
23
|
+
// /docs landing page doesn't exist in static builds
|
|
24
|
+
'./src/portal/specs/docs.test.ts',
|
|
25
|
+
],
|
|
26
|
+
|
|
27
|
+
// Output directory for static test results
|
|
28
|
+
outputDir: './_results_/static-portal',
|
|
29
|
+
|
|
30
|
+
// Override reporters to use separate output directories
|
|
31
|
+
reporters: [
|
|
32
|
+
'spec',
|
|
33
|
+
[
|
|
34
|
+
require('wdio-video-reporter'),
|
|
35
|
+
{
|
|
36
|
+
saveAllVideos: false,
|
|
37
|
+
videoSlowdownMultiplier: 3,
|
|
38
|
+
outputDir: './_results_/static-portal/videos',
|
|
39
|
+
},
|
|
40
|
+
],
|
|
41
|
+
[
|
|
42
|
+
'allure',
|
|
43
|
+
{
|
|
44
|
+
outputDir: './_results_/static-portal/allure-raw',
|
|
45
|
+
disableWebdriverStepsReporting: true,
|
|
46
|
+
disableWebdriverScreenshotsReporting: false,
|
|
47
|
+
},
|
|
48
|
+
],
|
|
49
|
+
],
|
|
50
|
+
};
|
package/tsconfig.json
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"strict": true,
|
|
4
|
+
"allowSyntheticDefaultImports": true,
|
|
5
|
+
"outDir": "./.tsbuild/",
|
|
6
|
+
"experimentalDecorators": true,
|
|
7
|
+
"resolveJsonModule": true,
|
|
8
|
+
"noUnusedLocals": true,
|
|
9
|
+
"declaration": true,
|
|
10
|
+
"sourceMap": true,
|
|
11
|
+
"declarationMap": true,
|
|
12
|
+
"esModuleInterop": true,
|
|
13
|
+
"module": "commonjs",
|
|
14
|
+
"moduleResolution": "node",
|
|
15
|
+
"target": "es2020",
|
|
16
|
+
"lib": ["ES2020"],
|
|
17
|
+
"types": [
|
|
18
|
+
"node",
|
|
19
|
+
"mocha",
|
|
20
|
+
"webdriverio/async",
|
|
21
|
+
"@wdio/mocha-framework",
|
|
22
|
+
"@wdio/selenium-standalone-service"
|
|
23
|
+
]
|
|
24
|
+
},
|
|
25
|
+
"include": ["./src/**/*.ts"]
|
|
26
|
+
}
|