codeceptjs 4.0.0-rc.2 → 4.0.0-rc.20
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 +39 -27
- package/bin/codecept.js +15 -2
- package/bin/codeceptq.js +49 -0
- package/bin/mcp-server.js +1187 -0
- package/docs/advanced.md +201 -0
- package/docs/agents.md +159 -0
- package/docs/ai.md +537 -0
- package/docs/aitrace.md +266 -0
- package/docs/api.md +332 -0
- package/docs/assertions.md +415 -0
- package/docs/auth.md +318 -0
- package/docs/basics.md +424 -0
- package/docs/bdd.md +539 -0
- package/docs/best.md +240 -0
- package/docs/bootstrap.md +132 -0
- package/docs/commands.md +352 -0
- package/docs/community-helpers.md +63 -0
- package/docs/configuration.md +230 -0
- package/docs/continuous-integration.md +497 -0
- package/docs/custom-helpers.md +297 -0
- package/docs/data.md +448 -0
- package/docs/debugging.md +332 -0
- package/docs/detox.md +235 -0
- package/docs/docker.md +136 -0
- package/docs/effects.md +179 -0
- package/docs/element-based-testing.md +295 -0
- package/docs/element-selection.md +125 -0
- package/docs/els.md +328 -0
- package/docs/examples.md +161 -0
- package/docs/heal.md +213 -0
- package/docs/helpers/ApiDataFactory.md +267 -0
- package/docs/helpers/Appium.md +1405 -0
- package/docs/helpers/Detox.md +665 -0
- package/docs/helpers/ExpectHelper.md +275 -0
- package/docs/helpers/FileSystem.md +152 -0
- package/docs/helpers/GraphQL.md +152 -0
- package/docs/helpers/GraphQLDataFactory.md +226 -0
- package/docs/helpers/JSONResponse.md +255 -0
- package/docs/helpers/Mochawesome.md +8 -0
- package/docs/helpers/MockRequest.md +377 -0
- package/docs/helpers/MockServer.md +212 -0
- package/docs/helpers/Playwright.md +2969 -0
- package/docs/helpers/Polly.md +44 -0
- package/docs/helpers/Protractor.md +1769 -0
- package/docs/helpers/Puppeteer-firefox.md +86 -0
- package/docs/helpers/Puppeteer.md +2690 -0
- package/docs/helpers/REST.md +289 -0
- package/docs/helpers/SoftExpectHelper.md +352 -0
- package/docs/helpers/WebDriver.md +2682 -0
- package/docs/hooks.md +339 -0
- package/docs/index.md +111 -0
- package/docs/installation.md +83 -0
- package/docs/internal-api.md +265 -0
- package/docs/internal-test-server.md +89 -0
- package/docs/locators.md +355 -0
- package/docs/mcp.md +485 -0
- package/docs/migration-4.md +556 -0
- package/docs/mobile.md +338 -0
- package/docs/pageobjects.md +399 -0
- package/docs/parallel.md +585 -0
- package/docs/playwright.md +714 -0
- package/docs/plugins.md +866 -0
- package/docs/puppeteer.md +314 -0
- package/docs/quickstart.md +120 -0
- package/docs/react.md +70 -0
- package/docs/reports.md +483 -0
- package/docs/retry.md +274 -0
- package/docs/secrets.md +150 -0
- package/docs/sessions.md +80 -0
- package/docs/shadow.md +68 -0
- package/docs/test-structure.md +275 -0
- package/docs/timeouts.md +183 -0
- package/docs/translation.md +247 -0
- package/docs/tutorial.md +271 -0
- package/docs/typescript.md +374 -0
- package/docs/web-element.md +251 -0
- package/docs/webdriver.md +708 -0
- package/docs/within.md +55 -0
- package/lib/ai.js +3 -2
- package/lib/aria.js +260 -0
- package/lib/assertions.js +18 -0
- package/lib/codecept.js +26 -23
- package/lib/command/check.js +2 -1
- package/lib/command/dryRun.js +24 -5
- package/lib/command/generate.js +2 -0
- package/lib/command/gherkin/snippets.js +5 -4
- package/lib/command/init.js +248 -269
- package/lib/command/list.js +150 -10
- package/lib/command/query.js +218 -0
- package/lib/command/run-multiple.js +2 -0
- package/lib/command/run-workers.js +2 -0
- package/lib/command/run.js +1 -1
- package/lib/command/workers/runTests.js +10 -10
- package/lib/config.js +77 -4
- package/lib/container.js +114 -17
- package/lib/effects.js +17 -0
- package/lib/element/WebElement.js +246 -2
- package/lib/els.js +12 -6
- package/lib/globals.js +32 -19
- package/lib/heal.js +4 -3
- package/lib/helper/ApiDataFactory.js +2 -1
- package/lib/helper/Appium.js +8 -8
- package/lib/helper/FileSystem.js +3 -2
- package/lib/helper/GraphQLDataFactory.js +2 -1
- package/lib/helper/Playwright.js +228 -162
- package/lib/helper/Puppeteer.js +208 -76
- package/lib/helper/WebDriver.js +173 -68
- package/lib/helper/errors/MultipleElementsFound.js +27 -110
- package/lib/helper/errors/NonFocusedType.js +8 -0
- package/lib/helper/extras/Download.js +45 -0
- package/lib/helper/extras/PlaywrightReactVueLocator.js +45 -36
- package/lib/helper/extras/elementSelection.js +58 -0
- package/lib/helper/extras/focusCheck.js +43 -0
- package/lib/helper/extras/richTextEditor.js +178 -0
- package/lib/helper/scripts/dropFile.js +11 -0
- package/lib/history.js +3 -2
- package/lib/html.js +103 -16
- package/lib/index.js +9 -1
- package/lib/listener/config.js +6 -4
- package/lib/listener/emptyRun.js +2 -1
- package/lib/listener/globalRetry.js +32 -6
- package/lib/listener/helpers.js +4 -1
- package/lib/listener/mocha.js +2 -1
- package/lib/listener/pageobjects.js +43 -0
- package/lib/listener/result.js +3 -2
- package/lib/locator.js +126 -3
- package/lib/mocha/cli.js +14 -2
- package/lib/mocha/factory.js +7 -2
- package/lib/mocha/inject.js +1 -1
- package/lib/mocha/scenarioConfig.js +2 -1
- package/lib/mocha/ui.js +5 -6
- package/lib/parser.js +2 -2
- package/lib/pause.js +38 -4
- package/lib/plugin/aiTrace.js +453 -0
- package/lib/plugin/analyze.js +1 -1
- package/lib/plugin/auth.js +3 -3
- package/lib/plugin/browser.js +77 -0
- package/lib/plugin/expose.js +159 -0
- package/lib/plugin/heal.js +44 -1
- package/lib/plugin/pageInfo.js +53 -49
- package/lib/plugin/pause.js +131 -0
- package/lib/plugin/pauseOnFail.js +10 -34
- package/lib/plugin/retryFailedStep.js +28 -19
- package/lib/plugin/screencast.js +287 -0
- package/lib/plugin/screenshot.js +563 -0
- package/lib/plugin/screenshotOnFail.js +8 -171
- package/lib/rerun.js +2 -1
- package/lib/result.js +2 -1
- package/lib/step/base.js +3 -2
- package/lib/step/config.js +15 -2
- package/lib/step/record.js +2 -2
- package/lib/store.js +72 -3
- package/lib/translation.js +2 -1
- package/lib/utils/mask_data.js +2 -1
- package/lib/utils/pluginParser.js +151 -0
- package/lib/utils/trace.js +297 -0
- package/lib/utils.js +77 -3
- package/lib/workers.js +52 -22
- package/package.json +19 -13
- package/typings/index.d.ts +19 -5
- package/docs/webapi/amOnPage.mustache +0 -11
- package/docs/webapi/appendField.mustache +0 -11
- package/docs/webapi/attachFile.mustache +0 -12
- package/docs/webapi/blur.mustache +0 -18
- package/docs/webapi/checkOption.mustache +0 -13
- package/docs/webapi/clearCookie.mustache +0 -9
- package/docs/webapi/clearField.mustache +0 -9
- package/docs/webapi/click.mustache +0 -29
- package/docs/webapi/clickLink.mustache +0 -8
- package/docs/webapi/closeCurrentTab.mustache +0 -7
- package/docs/webapi/closeOtherTabs.mustache +0 -8
- package/docs/webapi/dontSee.mustache +0 -11
- package/docs/webapi/dontSeeCheckboxIsChecked.mustache +0 -10
- package/docs/webapi/dontSeeCookie.mustache +0 -8
- package/docs/webapi/dontSeeCurrentPathEquals.mustache +0 -10
- package/docs/webapi/dontSeeCurrentUrlEquals.mustache +0 -10
- package/docs/webapi/dontSeeElement.mustache +0 -8
- package/docs/webapi/dontSeeElementInDOM.mustache +0 -8
- package/docs/webapi/dontSeeInCurrentUrl.mustache +0 -4
- package/docs/webapi/dontSeeInField.mustache +0 -11
- package/docs/webapi/dontSeeInSource.mustache +0 -8
- package/docs/webapi/dontSeeInTitle.mustache +0 -8
- package/docs/webapi/dontSeeTraffic.mustache +0 -13
- package/docs/webapi/doubleClick.mustache +0 -13
- package/docs/webapi/downloadFile.mustache +0 -12
- package/docs/webapi/dragAndDrop.mustache +0 -9
- package/docs/webapi/dragSlider.mustache +0 -11
- package/docs/webapi/executeAsyncScript.mustache +0 -24
- package/docs/webapi/executeScript.mustache +0 -26
- package/docs/webapi/fillField.mustache +0 -16
- package/docs/webapi/flushNetworkTraffics.mustache +0 -5
- package/docs/webapi/focus.mustache +0 -13
- package/docs/webapi/forceClick.mustache +0 -28
- package/docs/webapi/forceRightClick.mustache +0 -18
- package/docs/webapi/grabAllWindowHandles.mustache +0 -7
- package/docs/webapi/grabAttributeFrom.mustache +0 -10
- package/docs/webapi/grabAttributeFromAll.mustache +0 -9
- package/docs/webapi/grabBrowserLogs.mustache +0 -9
- package/docs/webapi/grabCookie.mustache +0 -11
- package/docs/webapi/grabCssPropertyFrom.mustache +0 -11
- package/docs/webapi/grabCssPropertyFromAll.mustache +0 -10
- package/docs/webapi/grabCurrentUrl.mustache +0 -9
- package/docs/webapi/grabCurrentWindowHandle.mustache +0 -6
- package/docs/webapi/grabDataFromPerformanceTiming.mustache +0 -20
- package/docs/webapi/grabElementBoundingRect.mustache +0 -20
- package/docs/webapi/grabGeoLocation.mustache +0 -8
- package/docs/webapi/grabHTMLFrom.mustache +0 -10
- package/docs/webapi/grabHTMLFromAll.mustache +0 -9
- package/docs/webapi/grabNumberOfOpenTabs.mustache +0 -8
- package/docs/webapi/grabNumberOfVisibleElements.mustache +0 -9
- package/docs/webapi/grabPageScrollPosition.mustache +0 -8
- package/docs/webapi/grabPopupText.mustache +0 -5
- package/docs/webapi/grabRecordedNetworkTraffics.mustache +0 -10
- package/docs/webapi/grabSource.mustache +0 -8
- package/docs/webapi/grabTextFrom.mustache +0 -10
- package/docs/webapi/grabTextFromAll.mustache +0 -9
- package/docs/webapi/grabTitle.mustache +0 -8
- package/docs/webapi/grabValueFrom.mustache +0 -9
- package/docs/webapi/grabValueFromAll.mustache +0 -8
- package/docs/webapi/grabWebElement.mustache +0 -9
- package/docs/webapi/grabWebElements.mustache +0 -9
- package/docs/webapi/moveCursorTo.mustache +0 -12
- package/docs/webapi/openNewTab.mustache +0 -7
- package/docs/webapi/pressKey.mustache +0 -12
- package/docs/webapi/pressKeyDown.mustache +0 -12
- package/docs/webapi/pressKeyUp.mustache +0 -12
- package/docs/webapi/pressKeyWithKeyNormalization.mustache +0 -60
- package/docs/webapi/refreshPage.mustache +0 -6
- package/docs/webapi/resizeWindow.mustache +0 -6
- package/docs/webapi/rightClick.mustache +0 -14
- package/docs/webapi/saveElementScreenshot.mustache +0 -10
- package/docs/webapi/saveScreenshot.mustache +0 -12
- package/docs/webapi/say.mustache +0 -10
- package/docs/webapi/scrollIntoView.mustache +0 -11
- package/docs/webapi/scrollPageToBottom.mustache +0 -6
- package/docs/webapi/scrollPageToTop.mustache +0 -6
- package/docs/webapi/scrollTo.mustache +0 -12
- package/docs/webapi/see.mustache +0 -11
- package/docs/webapi/seeAttributesOnElements.mustache +0 -9
- package/docs/webapi/seeCheckboxIsChecked.mustache +0 -10
- package/docs/webapi/seeCookie.mustache +0 -8
- package/docs/webapi/seeCssPropertiesOnElements.mustache +0 -9
- package/docs/webapi/seeCurrentPathEquals.mustache +0 -10
- package/docs/webapi/seeCurrentUrlEquals.mustache +0 -11
- package/docs/webapi/seeElement.mustache +0 -8
- package/docs/webapi/seeElementInDOM.mustache +0 -8
- package/docs/webapi/seeInCurrentUrl.mustache +0 -8
- package/docs/webapi/seeInField.mustache +0 -12
- package/docs/webapi/seeInPopup.mustache +0 -8
- package/docs/webapi/seeInSource.mustache +0 -7
- package/docs/webapi/seeInTitle.mustache +0 -8
- package/docs/webapi/seeNumberOfElements.mustache +0 -11
- package/docs/webapi/seeNumberOfVisibleElements.mustache +0 -10
- package/docs/webapi/seeTextEquals.mustache +0 -9
- package/docs/webapi/seeTitleEquals.mustache +0 -8
- package/docs/webapi/seeTraffic.mustache +0 -36
- package/docs/webapi/selectOption.mustache +0 -21
- package/docs/webapi/setCookie.mustache +0 -16
- package/docs/webapi/setGeoLocation.mustache +0 -12
- package/docs/webapi/startRecordingTraffic.mustache +0 -8
- package/docs/webapi/startRecordingWebSocketMessages.mustache +0 -8
- package/docs/webapi/stopRecordingTraffic.mustache +0 -5
- package/docs/webapi/stopRecordingWebSocketMessages.mustache +0 -7
- package/docs/webapi/switchTo.mustache +0 -9
- package/docs/webapi/switchToNextTab.mustache +0 -10
- package/docs/webapi/switchToPreviousTab.mustache +0 -10
- package/docs/webapi/type.mustache +0 -21
- package/docs/webapi/uncheckOption.mustache +0 -13
- package/docs/webapi/wait.mustache +0 -8
- package/docs/webapi/waitForClickable.mustache +0 -11
- package/docs/webapi/waitForCookie.mustache +0 -9
- package/docs/webapi/waitForDetached.mustache +0 -10
- package/docs/webapi/waitForDisabled.mustache +0 -6
- package/docs/webapi/waitForElement.mustache +0 -11
- package/docs/webapi/waitForEnabled.mustache +0 -6
- package/docs/webapi/waitForFunction.mustache +0 -17
- package/docs/webapi/waitForInvisible.mustache +0 -10
- package/docs/webapi/waitForNumberOfTabs.mustache +0 -9
- package/docs/webapi/waitForText.mustache +0 -13
- package/docs/webapi/waitForValue.mustache +0 -10
- package/docs/webapi/waitForVisible.mustache +0 -10
- package/docs/webapi/waitInUrl.mustache +0 -9
- package/docs/webapi/waitNumberOfVisibleElements.mustache +0 -10
- package/docs/webapi/waitToHide.mustache +0 -10
- package/docs/webapi/waitUrlEquals.mustache +0 -10
- package/lib/helper/AI.js +0 -214
- package/lib/listener/enhancedGlobalRetry.js +0 -110
- package/lib/plugin/enhancedRetryFailedStep.js +0 -99
- package/lib/plugin/htmlReporter.js +0 -3648
- package/lib/plugin/stepByStepReport.js +0 -427
- package/lib/plugin/subtitles.js +0 -89
- package/lib/retryCoordinator.js +0 -207
- package/typings/promiseBasedTypes.d.ts +0 -9469
- package/typings/types.d.ts +0 -11402
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
[](https://stand-with-ukraine.pp.ua)
|
|
2
2
|
|
|
3
3
|
[<img src="https://img.shields.io/badge/slack-@codeceptjs-purple.svg?logo=slack">](https://join.slack.com/t/codeceptjs/shared_invite/enQtMzA5OTM4NDM2MzA4LWE4MThhN2NmYTgxNTU5MTc4YzAyYWMwY2JkMmZlYWI5MWQ2MDM5MmRmYzZmYmNiNmY5NTAzM2EwMGIwOTNhOGQ) [<img src="https://img.shields.io/badge/discourse-codeceptjs-purple">](https://codecept.discourse.group) [![NPM version][npm-image]][npm-url] [<img src="https://img.shields.io/badge/dockerhub-images-blue.svg?logo=codeceptjs">](https://hub.docker.com/r/codeceptjs/codeceptjs)
|
|
4
|
-
[](https://github.com/codeceptjs/CodeceptJS/edit/3.x/docs/ai.md) [](https://github.com/vshymanskyy/StandWithUkraine/blob/main/docs/README.md)
|
|
4
|
+
[](https://github.com/codeceptjs/CodeceptJS/edit/3.x/docs/ai.md) [](https://github.com/codeceptjs/CodeceptJS/blob/main/docs/mcp.md) [](https://github.com/vshymanskyy/StandWithUkraine/blob/main/docs/README.md)
|
|
5
5
|
|
|
6
6
|
## Build Status
|
|
7
7
|
|
|
@@ -233,48 +233,60 @@ Scenario('test title', () => {
|
|
|
233
233
|
})
|
|
234
234
|
```
|
|
235
235
|
|
|
236
|
-
## HTML
|
|
236
|
+
## HTML Reports
|
|
237
237
|
|
|
238
|
-
|
|
238
|
+
Generate beautiful HTML reports using **[@testomatio/reporter](https://github.com/testomatio/reporter)** package.
|
|
239
239
|
|
|
240
|
-
###
|
|
241
|
-
|
|
242
|
-
- **Interactive Dashboard**: Visual statistics, pie charts, and expandable test details
|
|
243
|
-
- **Step-by-Step Execution**: Shows individual test steps with timing and status indicators
|
|
244
|
-
- **BDD/Gherkin Support**: Full support for feature files with proper scenario formatting
|
|
245
|
-
- **System Information**: Comprehensive environment details including browser versions
|
|
246
|
-
- **Advanced Filtering**: Real-time filtering by status, tags, features, and test types
|
|
247
|
-
- **History Tracking**: Multi-run history with trend visualization
|
|
248
|
-
- **Error Details**: Clean formatting of error messages and stack traces
|
|
249
|
-
- **Artifacts Support**: Display screenshots and other test artifacts
|
|
240
|
+
### Installation
|
|
250
241
|
|
|
251
|
-
|
|
242
|
+
```sh
|
|
243
|
+
npm install @testomatio/reporter --save-dev
|
|
244
|
+
```
|
|
252
245
|
|
|
253
|
-
|
|
246
|
+
### Configuration
|
|
254
247
|
|
|
255
|
-
|
|
248
|
+
Add the `testomatio` plugin to your `codecept.conf.js`:
|
|
256
249
|
|
|
257
|
-
|
|
250
|
+
```js
|
|
251
|
+
plugins: {
|
|
252
|
+
testomatio: {
|
|
253
|
+
enabled: true,
|
|
254
|
+
require: '@testomatio/reporter/lib/adapter/codecept',
|
|
255
|
+
},
|
|
256
|
+
}
|
|
257
|
+
```
|
|
258
258
|
|
|
259
|
-
|
|
259
|
+
### Usage
|
|
260
260
|
|
|
261
|
-
|
|
261
|
+
Generate HTML reports by setting the `TESTOMATIO_HTML_REPORT_SAVE` environment variable:
|
|
262
262
|
|
|
263
|
-
|
|
263
|
+
```sh
|
|
264
|
+
TESTOMATIO_HTML_REPORT_SAVE=1 npx codeceptjs run
|
|
265
|
+
```
|
|
264
266
|
|
|
265
|
-
|
|
267
|
+
The report will be saved to `html-report/testomatio-report.html`.
|
|
266
268
|
|
|
267
|
-
|
|
269
|
+
### Features
|
|
268
270
|
|
|
269
|
-
|
|
271
|
+
- Modern, responsive interface with real-time statistics
|
|
272
|
+
- Detailed test information with step-by-step breakdown
|
|
273
|
+
- Screenshots, videos, and artifacts display
|
|
274
|
+
- BDD/Gherkin support with proper scenario formatting
|
|
275
|
+
- Customizable output location and filename
|
|
276
|
+
- Optional integration with [Testomat.io](https://testomat.io) cloud
|
|
270
277
|
|
|
271
|
-
|
|
278
|
+
### Customization
|
|
272
279
|
|
|
273
|
-
|
|
280
|
+
```sh
|
|
281
|
+
# Custom output folder
|
|
282
|
+
TESTOMATIO_HTML_REPORT_SAVE=1 TESTOMATIO_HTML_REPORT_FOLDER=./reports npx codeceptjs run
|
|
274
283
|
|
|
275
|
-
|
|
284
|
+
# Custom filename
|
|
285
|
+
TESTOMATIO_HTML_REPORT_SAVE=1 TESTOMATIO_HTML_FILENAME=my-report.html npx codeceptjs run
|
|
276
286
|
|
|
277
|
-
|
|
287
|
+
# Integrate with Testomat.io cloud
|
|
288
|
+
TESTOMATIO_HTML_REPORT_SAVE=1 TESTOMATIO=your_api_key npx codeceptjs run
|
|
289
|
+
```
|
|
278
290
|
|
|
279
291
|
## PageObjects
|
|
280
292
|
|
package/bin/codecept.js
CHANGED
|
@@ -72,7 +72,11 @@ if (process.versions.node && process.versions.node.split('.') && process.version
|
|
|
72
72
|
program.usage('<command> [options]')
|
|
73
73
|
program.version(Codecept.version())
|
|
74
74
|
|
|
75
|
-
program
|
|
75
|
+
program
|
|
76
|
+
.command('init [path]')
|
|
77
|
+
.description('Creates dummy config in current dir or [path]')
|
|
78
|
+
.option('-y, --yes', 'skip prompts and use defaults (Playwright + chromium, BASE_URL env for url)')
|
|
79
|
+
.action(commandHandler('../lib/command/init.js'))
|
|
76
80
|
|
|
77
81
|
program
|
|
78
82
|
.command('check')
|
|
@@ -93,7 +97,14 @@ program
|
|
|
93
97
|
.option(commandFlags.config.flag, commandFlags.config.description)
|
|
94
98
|
.action(commandHandler('../lib/command/interactive.js'))
|
|
95
99
|
|
|
96
|
-
program
|
|
100
|
+
program
|
|
101
|
+
.command('list [path]')
|
|
102
|
+
.alias('l')
|
|
103
|
+
.description('List all actions for I.')
|
|
104
|
+
.option(commandFlags.config.flag, commandFlags.config.description)
|
|
105
|
+
.option('--docs', 'show documentation for each action')
|
|
106
|
+
.option('--action <name>', 'show docs for a single action (e.g. amOnPage or I.amOnPage)')
|
|
107
|
+
.action(commandHandler('../lib/command/list.js'))
|
|
97
108
|
|
|
98
109
|
program
|
|
99
110
|
.command('def [path]')
|
|
@@ -251,6 +262,8 @@ program
|
|
|
251
262
|
.option(commandFlags.steps.flag, commandFlags.steps.description)
|
|
252
263
|
.option(commandFlags.verbose.flag, commandFlags.verbose.description)
|
|
253
264
|
.option(commandFlags.debug.flag, commandFlags.debug.description)
|
|
265
|
+
.option('--no-ansi', 'disable colored / ANSI-styled output')
|
|
266
|
+
.option('--numbers', 'prefix each step with a per-test index number')
|
|
254
267
|
.action(commandHandler('../lib/command/dryRun.js'))
|
|
255
268
|
|
|
256
269
|
program
|
package/bin/codeceptq.js
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { Command } from 'commander'
|
|
3
|
+
import query from '../lib/command/query.js'
|
|
4
|
+
|
|
5
|
+
const program = new Command()
|
|
6
|
+
|
|
7
|
+
program
|
|
8
|
+
.name('codeceptq')
|
|
9
|
+
.description('Query HTML with CodeceptJS locators (CSS, XPath, fuzzy text, semantic).\n\nReads HTML from stdin or --file and prints matching elements with line numbers.')
|
|
10
|
+
.argument('<locator>', 'locator string (CSS, XPath, or text for semantic match)')
|
|
11
|
+
.argument('[context]', 'scope locator — restrict matches to descendants of context')
|
|
12
|
+
.option('--field', 'treat locator as form field (input/textarea/select)')
|
|
13
|
+
.option('--click', 'treat locator as clickable element (link, button, role=button, ...)')
|
|
14
|
+
.option('--clickable', 'alias for --click')
|
|
15
|
+
.option('--checkable', 'treat locator as checkbox/radio')
|
|
16
|
+
.option('--select', 'treat locator as <option> visible text')
|
|
17
|
+
.option('--xpath', 'force XPath interpretation')
|
|
18
|
+
.option('--css', 'force CSS interpretation')
|
|
19
|
+
.option('--file <path>', 'read HTML from file instead of stdin')
|
|
20
|
+
.option('--limit <n>', 'cap matches printed', '20')
|
|
21
|
+
.option('--snippet <chars>', 'truncate outerHTML per match to N characters', '500')
|
|
22
|
+
.option('--full', 'print full outerHTML (no truncation)')
|
|
23
|
+
.option('--json', 'output JSON')
|
|
24
|
+
.addHelpText(
|
|
25
|
+
'after',
|
|
26
|
+
`
|
|
27
|
+
Examples:
|
|
28
|
+
cat trace/0001_page.html | codeceptq './/input'
|
|
29
|
+
cat trace/0001_page.html | codeceptq 'Username' --field
|
|
30
|
+
cat trace/0001_page.html | codeceptq 'Username' '.form' --field
|
|
31
|
+
codeceptq './/button' --file trace/0001_page.html
|
|
32
|
+
codeceptq 'Login' --click --file page.html
|
|
33
|
+
|
|
34
|
+
Exit codes:
|
|
35
|
+
0 matches found
|
|
36
|
+
1 no matches
|
|
37
|
+
2 invalid input or XPath
|
|
38
|
+
`,
|
|
39
|
+
)
|
|
40
|
+
.action(async (locator, context, options) => {
|
|
41
|
+
try {
|
|
42
|
+
await query(locator, context, options)
|
|
43
|
+
} catch (err) {
|
|
44
|
+
console.error(`codeceptq: ${err.message}`)
|
|
45
|
+
process.exitCode = 2
|
|
46
|
+
}
|
|
47
|
+
})
|
|
48
|
+
|
|
49
|
+
program.parseAsync(process.argv)
|