create-wdio 9.27.1 → 9.27.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/build/cli/utils.d.ts.map +1 -1
- package/build/config/cli.js +153 -21
- package/build/constants.d.ts +37 -7
- package/build/constants.d.ts.map +1 -1
- package/build/index.js +92 -18
- package/build/install/cli.js +153 -21
- package/build/templates/snippets/services.ejs +19 -0
- package/build/templates/wdio.conf.tpl.ejs +5 -1
- package/build/types.d.ts +5 -1
- package/build/types.d.ts.map +1 -1
- package/build/utils/index.js +92 -18
- package/package.json +2 -2
package/build/cli/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/cli/utils.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAGhD,wBAAsB,gBAAgB,CAAC,aAAa,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/cli/utils.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAGhD,wBAAsB,gBAAgB,CAAC,aAAa,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,iBA+BlF;AAED;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,GAAE,QAA2B,mBA+B9H;AAED,eAAO,MAAM,YAAY,GAAmB,KAAK,OAAO,KAAG,OAAO,CAAC,aAAa,CAyF/E,CAAA;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,qBAAqB,EAAC,MAAM,EAAE,UAAU,CAAC,EAAC,MAAM,GAAG,OAAO,CAAC,MAAM,GAAC,SAAS,CAAC,CAcrH"}
|
package/build/config/cli.js
CHANGED
|
@@ -676,7 +676,7 @@ async function formatConfigFilePaths(config) {
|
|
|
676
676
|
// package.json
|
|
677
677
|
var package_default = {
|
|
678
678
|
name: "create-wdio",
|
|
679
|
-
version: "9.27.
|
|
679
|
+
version: "9.27.1",
|
|
680
680
|
description: "Install and setup a WebdriverIO project with all its dependencies in a single run",
|
|
681
681
|
author: "WebdriverIO Team <mail@webdriver.io>",
|
|
682
682
|
homepage: "https://github.com/webdriverio/webdriverio/tree/main/packages/create-wdio",
|
|
@@ -788,8 +788,7 @@ var SUPPORTED_PACKAGES = {
|
|
|
788
788
|
runner: [
|
|
789
789
|
{ name: "E2E Testing - of Web or Mobile Applications", value: "@wdio/local-runner$--$local$--$e2e" },
|
|
790
790
|
{ name: "Component or Unit Testing - in the browser\n > https://webdriver.io/docs/component-testing", value: "@wdio/browser-runner$--$browser$--$component" },
|
|
791
|
-
{ name: "Desktop Testing - of Electron Applications\n > https://webdriver.io/docs/desktop-testing
|
|
792
|
-
{ name: "Desktop Testing - of MacOS Applications\n > https://webdriver.io/docs/desktop-testing/macos", value: "@wdio/local-runner$--$local$--$macos" },
|
|
791
|
+
{ name: "Desktop Testing - of Electron, Tauri, or macOS Applications\n > https://webdriver.io/docs/desktop-testing", value: "@wdio/local-runner$--$local$--$desktop" },
|
|
793
792
|
{ name: "VS Code Extension Testing\n > https://webdriver.io/docs/vscode-extension-testing", value: "@wdio/local-runner$--$local$--$vscode" },
|
|
794
793
|
{ name: "Roku Testing - of OTT apps running on RokuOS\n > https://webdriver.io/docs/wdio-roku-service", value: "@wdio/local-runner$--$local$--$roku" }
|
|
795
794
|
],
|
|
@@ -840,7 +839,9 @@ var SUPPORTED_PACKAGES = {
|
|
|
840
839
|
{ name: "browserstack", value: "@wdio/browserstack-service$--$browserstack" },
|
|
841
840
|
{ name: "lighthouse", value: "@wdio/lighthouse-service$--$lighthouse" },
|
|
842
841
|
{ name: "vscode", value: "wdio-vscode-service$--$vscode" },
|
|
843
|
-
{ name: "electron", value: "wdio
|
|
842
|
+
{ name: "electron", value: "@wdio/electron-service$--$electron" },
|
|
843
|
+
{ name: "tauri", value: "@wdio/tauri-service$--$tauri" },
|
|
844
|
+
{ name: "tauri-plugin", value: "@wdio/tauri-plugin$--$tauri-plugin" },
|
|
844
845
|
{ name: "appium", value: "@wdio/appium-service$--$appium" },
|
|
845
846
|
// external
|
|
846
847
|
{ name: "camera", value: "wdio-camera-service$--$camera" },
|
|
@@ -910,6 +911,55 @@ Learn more about Serenity/JS:
|
|
|
910
911
|
function usesSerenity(answers) {
|
|
911
912
|
return answers.framework.includes("serenity-js");
|
|
912
913
|
}
|
|
914
|
+
function buildTauriBanner(driverProvider, useFrontendPlugin) {
|
|
915
|
+
const lines = [
|
|
916
|
+
"",
|
|
917
|
+
"\u{1F980} Tauri requires a couple of Rust-side additions before tests can run:",
|
|
918
|
+
""
|
|
919
|
+
];
|
|
920
|
+
if (driverProvider === "Embedded driver via tauri-plugin-wdio-webdriver crate" /* Embedded */) {
|
|
921
|
+
lines.push(
|
|
922
|
+
" 1. Add the embedded WebDriver crate to `src-tauri/Cargo.toml`:",
|
|
923
|
+
"",
|
|
924
|
+
" [dependencies]",
|
|
925
|
+
' tauri-plugin-wdio-webdriver = "1"',
|
|
926
|
+
"",
|
|
927
|
+
" 2. Register the plugin in `src-tauri/src/lib.rs`:",
|
|
928
|
+
"",
|
|
929
|
+
" tauri::Builder::default()",
|
|
930
|
+
" .plugin(tauri_plugin_wdio_webdriver::init())",
|
|
931
|
+
" // ...",
|
|
932
|
+
""
|
|
933
|
+
);
|
|
934
|
+
} else if (driverProvider === "Official tauri-driver (cross-platform, Cargo-installed)" /* Official */) {
|
|
935
|
+
lines.push(
|
|
936
|
+
" 1. Install the official tauri-driver via Cargo:",
|
|
937
|
+
"",
|
|
938
|
+
" cargo install tauri-driver --locked",
|
|
939
|
+
"",
|
|
940
|
+
" 2. On Linux, set `WEBKIT_DISABLE_DMABUF_RENDERER=1` in your shell when running tests.",
|
|
941
|
+
""
|
|
942
|
+
);
|
|
943
|
+
} else if (driverProvider === "CrabNebula tauri-driver (managed cloud / drop-in)" /* CrabNebula */) {
|
|
944
|
+
lines.push(
|
|
945
|
+
" 1. Follow the CrabNebula tauri-driver setup guide:",
|
|
946
|
+
" \u{1F517} https://crabnebula.dev/docs/tauri-driver",
|
|
947
|
+
""
|
|
948
|
+
);
|
|
949
|
+
}
|
|
950
|
+
if (useFrontendPlugin) {
|
|
951
|
+
lines.push(
|
|
952
|
+
" Frontend plugin (@wdio/tauri-plugin) was added to your npm dependencies.",
|
|
953
|
+
" See https://webdriver.io/docs/desktop-testing/tauri/plugin-setup for wiring instructions.",
|
|
954
|
+
""
|
|
955
|
+
);
|
|
956
|
+
}
|
|
957
|
+
lines.push(
|
|
958
|
+
"Full Tauri setup docs:",
|
|
959
|
+
" \u{1F517} https://webdriver.io/docs/desktop-testing/tauri"
|
|
960
|
+
);
|
|
961
|
+
return lines.join("\n");
|
|
962
|
+
}
|
|
913
963
|
var ProtocolOptions = /* @__PURE__ */ ((ProtocolOptions2) => {
|
|
914
964
|
ProtocolOptions2["HTTPS"] = "https";
|
|
915
965
|
ProtocolOptions2["HTTP"] = "http";
|
|
@@ -935,6 +985,18 @@ var ElectronBuildToolChoice = /* @__PURE__ */ ((ElectronBuildToolChoice2) => {
|
|
|
935
985
|
ElectronBuildToolChoice2["SomethingElse"] = "Something else";
|
|
936
986
|
return ElectronBuildToolChoice2;
|
|
937
987
|
})(ElectronBuildToolChoice || {});
|
|
988
|
+
var DesktopFrameworkChoice = /* @__PURE__ */ ((DesktopFrameworkChoice2) => {
|
|
989
|
+
DesktopFrameworkChoice2["Electron"] = "Electron (https://www.electronjs.org/)";
|
|
990
|
+
DesktopFrameworkChoice2["Tauri"] = "Tauri (https://tauri.app/)";
|
|
991
|
+
DesktopFrameworkChoice2["MacOS"] = "Native macOS app";
|
|
992
|
+
return DesktopFrameworkChoice2;
|
|
993
|
+
})(DesktopFrameworkChoice || {});
|
|
994
|
+
var TauriDriverProviderChoice = /* @__PURE__ */ ((TauriDriverProviderChoice2) => {
|
|
995
|
+
TauriDriverProviderChoice2["Official"] = "Official tauri-driver (cross-platform, Cargo-installed)";
|
|
996
|
+
TauriDriverProviderChoice2["CrabNebula"] = "CrabNebula tauri-driver (managed cloud / drop-in)";
|
|
997
|
+
TauriDriverProviderChoice2["Embedded"] = "Embedded driver via tauri-plugin-wdio-webdriver crate";
|
|
998
|
+
return TauriDriverProviderChoice2;
|
|
999
|
+
})(TauriDriverProviderChoice || {});
|
|
938
1000
|
var SUPPORTED_BROWSER_RUNNER_PRESETS = [
|
|
939
1001
|
{ name: "Lit (https://lit.dev/)", value: "$--$" },
|
|
940
1002
|
{ name: "Vue.js (https://vuejs.org/)", value: "@vitejs/plugin-vue$--$vue" },
|
|
@@ -951,6 +1013,21 @@ function isBrowserRunner(answers) {
|
|
|
951
1013
|
function getTestingPurpose(answers) {
|
|
952
1014
|
return convertPackageHashToObject(answers.runner).purpose;
|
|
953
1015
|
}
|
|
1016
|
+
function getResolvedPurpose(answers) {
|
|
1017
|
+
const raw = getTestingPurpose(answers);
|
|
1018
|
+
if (raw !== "desktop") {
|
|
1019
|
+
return raw;
|
|
1020
|
+
}
|
|
1021
|
+
switch (answers.desktopFramework) {
|
|
1022
|
+
case "Tauri (https://tauri.app/)" /* Tauri */:
|
|
1023
|
+
return "tauri";
|
|
1024
|
+
case "Native macOS app" /* MacOS */:
|
|
1025
|
+
return "macos";
|
|
1026
|
+
case "Electron (https://www.electronjs.org/)" /* Electron */:
|
|
1027
|
+
default:
|
|
1028
|
+
return "electron";
|
|
1029
|
+
}
|
|
1030
|
+
}
|
|
954
1031
|
var TESTING_LIBRARY_PACKAGES = {
|
|
955
1032
|
react: "@testing-library/react",
|
|
956
1033
|
preact: "@testing-library/preact",
|
|
@@ -1013,6 +1090,15 @@ var QUESTIONNAIRE = [{
|
|
|
1013
1090
|
*/
|
|
1014
1091
|
answers.preset && TESTING_LIBRARY_PACKAGES[convertPackageHashToObject(answers.preset).short]
|
|
1015
1092
|
)
|
|
1093
|
+
}, {
|
|
1094
|
+
type: "list",
|
|
1095
|
+
name: "desktopFramework",
|
|
1096
|
+
message: "What type of desktop application are you testing?",
|
|
1097
|
+
choices: Object.values(DesktopFrameworkChoice),
|
|
1098
|
+
when: (
|
|
1099
|
+
/* istanbul ignore next */
|
|
1100
|
+
(answers) => getTestingPurpose(answers) === "desktop"
|
|
1101
|
+
)
|
|
1016
1102
|
}, {
|
|
1017
1103
|
type: "list",
|
|
1018
1104
|
name: "electronBuildTool",
|
|
@@ -1020,7 +1106,7 @@ var QUESTIONNAIRE = [{
|
|
|
1020
1106
|
choices: Object.values(ElectronBuildToolChoice),
|
|
1021
1107
|
when: (
|
|
1022
1108
|
/* instanbul ignore next */
|
|
1023
|
-
(answers) =>
|
|
1109
|
+
(answers) => getResolvedPurpose(answers) === "electron"
|
|
1024
1110
|
)
|
|
1025
1111
|
}, {
|
|
1026
1112
|
type: "input",
|
|
@@ -1028,7 +1114,33 @@ var QUESTIONNAIRE = [{
|
|
|
1028
1114
|
message: "What is the path to the binary of your built Electron app?",
|
|
1029
1115
|
when: (
|
|
1030
1116
|
/* istanbul ignore next */
|
|
1031
|
-
(answers) =>
|
|
1117
|
+
(answers) => getResolvedPurpose(answers) === "electron" && answers.electronBuildTool === "Something else" /* SomethingElse */
|
|
1118
|
+
)
|
|
1119
|
+
}, {
|
|
1120
|
+
type: "list",
|
|
1121
|
+
name: "tauriDriverProvider",
|
|
1122
|
+
message: "Which WebDriver provider would you like to use for Tauri?",
|
|
1123
|
+
choices: Object.values(TauriDriverProviderChoice),
|
|
1124
|
+
when: (
|
|
1125
|
+
/* istanbul ignore next */
|
|
1126
|
+
(answers) => getResolvedPurpose(answers) === "tauri"
|
|
1127
|
+
)
|
|
1128
|
+
}, {
|
|
1129
|
+
type: "confirm",
|
|
1130
|
+
name: "tauriUseFrontendPlugin",
|
|
1131
|
+
message: "Install @wdio/tauri-plugin for richer in-webview integration (browser.tauri.execute, mocking)?",
|
|
1132
|
+
default: true,
|
|
1133
|
+
when: (
|
|
1134
|
+
/* istanbul ignore next */
|
|
1135
|
+
(answers) => getResolvedPurpose(answers) === "tauri"
|
|
1136
|
+
)
|
|
1137
|
+
}, {
|
|
1138
|
+
type: "input",
|
|
1139
|
+
name: "tauriAppBinaryPath",
|
|
1140
|
+
message: "Path to your built Tauri binary (leave blank to use the default `cargo tauri build` output)?",
|
|
1141
|
+
when: (
|
|
1142
|
+
/* istanbul ignore next */
|
|
1143
|
+
(answers) => getResolvedPurpose(answers) === "tauri"
|
|
1032
1144
|
)
|
|
1033
1145
|
}, {
|
|
1034
1146
|
type: "list",
|
|
@@ -1230,7 +1342,7 @@ var QUESTIONNAIRE = [{
|
|
|
1230
1342
|
if (isBrowserRunner(answers)) {
|
|
1231
1343
|
return SUPPORTED_PACKAGES.framework.slice(0, 1);
|
|
1232
1344
|
}
|
|
1233
|
-
if (
|
|
1345
|
+
if (["electron", "tauri"].includes(getResolvedPurpose(answers))) {
|
|
1234
1346
|
return SUPPORTED_PACKAGES.framework.filter(
|
|
1235
1347
|
({ value }) => !value.startsWith("@serenity-js")
|
|
1236
1348
|
);
|
|
@@ -1263,7 +1375,7 @@ var QUESTIONNAIRE = [{
|
|
|
1263
1375
|
when: (
|
|
1264
1376
|
/* istanbul ignore next */
|
|
1265
1377
|
(answers) => {
|
|
1266
|
-
if (["vscode", "electron", "macos"].includes(
|
|
1378
|
+
if (["vscode", "electron", "tauri", "macos"].includes(getResolvedPurpose(answers)) && answers.framework.includes("cucumber")) {
|
|
1267
1379
|
return false;
|
|
1268
1380
|
}
|
|
1269
1381
|
return true;
|
|
@@ -1316,7 +1428,7 @@ var QUESTIONNAIRE = [{
|
|
|
1316
1428
|
* and also not needed when running VS Code tests since the service comes with
|
|
1317
1429
|
* its own page object implementation, nor when running Electron or MacOS tests
|
|
1318
1430
|
*/
|
|
1319
|
-
!["vscode", "electron", "macos"].includes(
|
|
1431
|
+
!["vscode", "electron", "tauri", "macos"].includes(getResolvedPurpose(answers)) && /**
|
|
1320
1432
|
* Serenity/JS generates Lean Page Objects by default, so there's no need to ask about it
|
|
1321
1433
|
* See https://serenity-js.org/handbook/web-testing/page-objects-pattern/
|
|
1322
1434
|
*/
|
|
@@ -1386,16 +1498,22 @@ var QUESTIONNAIRE = [{
|
|
|
1386
1498
|
if (answers.e2eEnvironment === "mobile") {
|
|
1387
1499
|
services.push("appium");
|
|
1388
1500
|
}
|
|
1389
|
-
if (
|
|
1501
|
+
if (getResolvedPurpose(answers) === "e2e" && isNuxtProject) {
|
|
1390
1502
|
services.push("nuxt");
|
|
1391
1503
|
}
|
|
1392
|
-
if (
|
|
1504
|
+
if (getResolvedPurpose(answers) === "vscode") {
|
|
1393
1505
|
return [SUPPORTED_PACKAGES.service.find(({ name }) => name === "vscode")];
|
|
1394
|
-
} else if (
|
|
1506
|
+
} else if (getResolvedPurpose(answers) === "electron") {
|
|
1395
1507
|
return [SUPPORTED_PACKAGES.service.find(({ name }) => name === "electron")];
|
|
1396
|
-
} else if (
|
|
1508
|
+
} else if (getResolvedPurpose(answers) === "tauri") {
|
|
1509
|
+
const tauriEntries = [SUPPORTED_PACKAGES.service.find(({ name }) => name === "tauri")];
|
|
1510
|
+
if (answers.tauriUseFrontendPlugin) {
|
|
1511
|
+
tauriEntries.push(SUPPORTED_PACKAGES.service.find(({ name }) => name === "tauri-plugin"));
|
|
1512
|
+
}
|
|
1513
|
+
return tauriEntries;
|
|
1514
|
+
} else if (getResolvedPurpose(answers) === "macos") {
|
|
1397
1515
|
return [SUPPORTED_PACKAGES.service.find(({ name }) => name === "appium")];
|
|
1398
|
-
} else if (
|
|
1516
|
+
} else if (getResolvedPurpose(answers) === "roku") {
|
|
1399
1517
|
return [SUPPORTED_PACKAGES.service.find(({ name }) => name === "roku")];
|
|
1400
1518
|
}
|
|
1401
1519
|
return prioServiceOrderFor(services);
|
|
@@ -1407,14 +1525,19 @@ var QUESTIONNAIRE = [{
|
|
|
1407
1525
|
} else if (answers.backend === "In the cloud using Sauce Labs" /* Saucelabs */) {
|
|
1408
1526
|
defaultServices.push("sauce");
|
|
1409
1527
|
}
|
|
1410
|
-
if (answers.e2eEnvironment === "mobile" ||
|
|
1528
|
+
if (answers.e2eEnvironment === "mobile" || getResolvedPurpose(answers) === "macos") {
|
|
1411
1529
|
defaultServices.push("appium");
|
|
1412
1530
|
}
|
|
1413
|
-
if (
|
|
1531
|
+
if (getResolvedPurpose(answers) === "vscode") {
|
|
1414
1532
|
defaultServices.push("vscode");
|
|
1415
|
-
} else if (
|
|
1533
|
+
} else if (getResolvedPurpose(answers) === "electron") {
|
|
1416
1534
|
defaultServices.push("electron");
|
|
1417
|
-
} else if (
|
|
1535
|
+
} else if (getResolvedPurpose(answers) === "tauri") {
|
|
1536
|
+
defaultServices.push("tauri");
|
|
1537
|
+
if (answers.tauriUseFrontendPlugin) {
|
|
1538
|
+
defaultServices.push("tauri-plugin");
|
|
1539
|
+
}
|
|
1540
|
+
} else if (getResolvedPurpose(answers) === "roku") {
|
|
1418
1541
|
defaultServices.push("roku");
|
|
1419
1542
|
}
|
|
1420
1543
|
if (isNuxtProject) {
|
|
@@ -1459,7 +1582,6 @@ var QUESTIONNAIRE = [{
|
|
|
1459
1582
|
default: true
|
|
1460
1583
|
}];
|
|
1461
1584
|
var COMMUNITY_PACKAGES_WITH_TS_SUPPORT = [
|
|
1462
|
-
"wdio-electron-service",
|
|
1463
1585
|
"wdio-vscode-service",
|
|
1464
1586
|
"wdio-nuxt-service",
|
|
1465
1587
|
"wdio-vite-service",
|
|
@@ -1483,11 +1605,21 @@ async function runConfigCommand(parsedAnswers, npmTag) {
|
|
|
1483
1605
|
await npmInstall(parsedAnswers, npmTag);
|
|
1484
1606
|
await createWDIOConfig(parsedAnswers);
|
|
1485
1607
|
await createWDIOScript(parsedAnswers);
|
|
1608
|
+
const extraInfoParts = [];
|
|
1609
|
+
if (parsedAnswers.serenityAdapter) {
|
|
1610
|
+
extraInfoParts.push(CONFIG_HELPER_SERENITY_BANNER);
|
|
1611
|
+
}
|
|
1612
|
+
if (parsedAnswers.purpose === "tauri") {
|
|
1613
|
+
extraInfoParts.push(buildTauriBanner(
|
|
1614
|
+
parsedAnswers.rawAnswers.tauriDriverProvider,
|
|
1615
|
+
parsedAnswers.rawAnswers.tauriUseFrontendPlugin
|
|
1616
|
+
));
|
|
1617
|
+
}
|
|
1486
1618
|
console.log(
|
|
1487
1619
|
configHelperSuccessMessage({
|
|
1488
1620
|
projectRootDir: parsedAnswers.projectRootDir,
|
|
1489
1621
|
runScript: parsedAnswers.serenityAdapter ? "serenity" : "wdio",
|
|
1490
|
-
extraInfo:
|
|
1622
|
+
extraInfo: extraInfoParts.join("\n")
|
|
1491
1623
|
})
|
|
1492
1624
|
);
|
|
1493
1625
|
await runAppiumInstaller(parsedAnswers);
|
|
@@ -1554,7 +1686,7 @@ var parseAnswers = async function(yes) {
|
|
|
1554
1686
|
runner: runnerPackage.short,
|
|
1555
1687
|
preset: presetPackage.short,
|
|
1556
1688
|
framework: frameworkPackage.short,
|
|
1557
|
-
purpose:
|
|
1689
|
+
purpose: getResolvedPurpose(answers),
|
|
1558
1690
|
serenityAdapter: frameworkPackage.package === "@serenity-js/webdriverio" && frameworkPackage.purpose,
|
|
1559
1691
|
reporters: reporterPackages.map(({ short }) => short),
|
|
1560
1692
|
plugins: pluginPackages.map(({ short }) => short),
|
package/build/constants.d.ts
CHANGED
|
@@ -55,6 +55,11 @@ export declare const isNuxtProject: boolean;
|
|
|
55
55
|
export declare const SUPPORTED_CONFIG_FILE_EXTENSION: string[];
|
|
56
56
|
export declare const CONFIG_HELPER_SERENITY_BANNER = "\nLearn more about Serenity/JS:\n \uD83D\uDD17 https://serenity-js.org/\n \uD83D\uDD17 https://serenity-js.org/handbook/test-runners/webdriverio/\n";
|
|
57
57
|
export declare function usesSerenity(answers: Questionnair): boolean;
|
|
58
|
+
/**
|
|
59
|
+
* Build the post-install instructions for Tauri users. The npm side is auto-installed,
|
|
60
|
+
* but the Rust side (Cargo.toml + plugin registration) needs manual edits.
|
|
61
|
+
*/
|
|
62
|
+
export declare function buildTauriBanner(driverProvider: TauriDriverProviderChoice | undefined, useFrontendPlugin: boolean | undefined): string;
|
|
58
63
|
declare enum ProtocolOptions {
|
|
59
64
|
HTTPS = "https",
|
|
60
65
|
HTTP = "http"
|
|
@@ -76,6 +81,16 @@ export declare enum ElectronBuildToolChoice {
|
|
|
76
81
|
ElectronBuilder = "electron-builder (https://www.electron.build/)",
|
|
77
82
|
SomethingElse = "Something else"
|
|
78
83
|
}
|
|
84
|
+
export declare enum DesktopFrameworkChoice {
|
|
85
|
+
Electron = "Electron (https://www.electronjs.org/)",
|
|
86
|
+
Tauri = "Tauri (https://tauri.app/)",
|
|
87
|
+
MacOS = "Native macOS app"
|
|
88
|
+
}
|
|
89
|
+
export declare enum TauriDriverProviderChoice {
|
|
90
|
+
Official = "Official tauri-driver (cross-platform, Cargo-installed)",
|
|
91
|
+
CrabNebula = "CrabNebula tauri-driver (managed cloud / drop-in)",
|
|
92
|
+
Embedded = "Embedded driver via tauri-plugin-wdio-webdriver crate"
|
|
93
|
+
}
|
|
79
94
|
export declare const SUPPORTED_BROWSER_RUNNER_PRESETS: ({
|
|
80
95
|
name: string;
|
|
81
96
|
value: string;
|
|
@@ -84,6 +99,7 @@ export declare const SUPPORTED_BROWSER_RUNNER_PRESETS: ({
|
|
|
84
99
|
value: null;
|
|
85
100
|
})[];
|
|
86
101
|
declare function isBrowserRunner(answers: Questionnair): boolean;
|
|
102
|
+
export declare function getResolvedPurpose(answers: Questionnair): "e2e" | "vscode" | "electron" | "tauri" | "roku" | "component" | "macos";
|
|
87
103
|
export declare const TESTING_LIBRARY_PACKAGES: Record<string, string>;
|
|
88
104
|
export declare const E2E_ENVIRONMENTS: {
|
|
89
105
|
name: string;
|
|
@@ -132,6 +148,13 @@ export declare const QUESTIONNAIRE: ({
|
|
|
132
148
|
default: boolean;
|
|
133
149
|
when: (answers: Questionnair) => string | false | undefined;
|
|
134
150
|
choices?: undefined;
|
|
151
|
+
} | {
|
|
152
|
+
type: string;
|
|
153
|
+
name: string;
|
|
154
|
+
message: string;
|
|
155
|
+
choices: DesktopFrameworkChoice[];
|
|
156
|
+
when: (answers: Questionnair) => boolean;
|
|
157
|
+
default?: undefined;
|
|
135
158
|
} | {
|
|
136
159
|
type: string;
|
|
137
160
|
name: string;
|
|
@@ -139,6 +162,20 @@ export declare const QUESTIONNAIRE: ({
|
|
|
139
162
|
choices: ElectronBuildToolChoice[];
|
|
140
163
|
when: (answers: Questionnair) => boolean;
|
|
141
164
|
default?: undefined;
|
|
165
|
+
} | {
|
|
166
|
+
type: string;
|
|
167
|
+
name: string;
|
|
168
|
+
message: string;
|
|
169
|
+
choices: TauriDriverProviderChoice[];
|
|
170
|
+
when: (answers: Questionnair) => boolean;
|
|
171
|
+
default?: undefined;
|
|
172
|
+
} | {
|
|
173
|
+
type: string;
|
|
174
|
+
name: string;
|
|
175
|
+
message: string;
|
|
176
|
+
default: boolean;
|
|
177
|
+
when: (answers: Questionnair) => boolean;
|
|
178
|
+
choices?: undefined;
|
|
142
179
|
} | {
|
|
143
180
|
type: string;
|
|
144
181
|
name: string;
|
|
@@ -184,13 +221,6 @@ export declare const QUESTIONNAIRE: ({
|
|
|
184
221
|
choices: RegionOptions[];
|
|
185
222
|
when: (answers: Questionnair) => boolean;
|
|
186
223
|
default?: undefined;
|
|
187
|
-
} | {
|
|
188
|
-
type: string;
|
|
189
|
-
name: string;
|
|
190
|
-
message: string;
|
|
191
|
-
default: boolean;
|
|
192
|
-
when: (answers: Questionnair) => boolean;
|
|
193
|
-
choices?: undefined;
|
|
194
224
|
} | {
|
|
195
225
|
type: string;
|
|
196
226
|
name: string;
|
package/build/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AACA,OAAO,GAAG,MAAM,iBAAiB,CAAqB;AAGtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAG9C,OAAO,EAAE,GAAG,EAAE,CAAA;AAEd,eAAO,MAAM,WAAW,+BAA6B,CAAA;AACrD,eAAO,MAAM,OAAO,+BAAwB,CAAA;AAC5C,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAA;AAE7D,eAAO,MAAM,eAAe,WAAW,CAAA;AACvC,eAAO,MAAM,WAAW,w2EAwCvB,CAAA;AAED,eAAO,MAAM,aAAa,QAIzB,CAAA;AAED,eAAO,MAAM,wBAAwB,QAIpC,CAAA;AAED,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAKlD,CAAA;AAEV,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAK3C,CAAA;AAEV,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAKlD,CAAA;AAEV,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAK3C,CAAA;AAEV,eAAO,MAAM,0BAA0B,EAAmC,eAAe,EAAE,CAAA;AAE3F,eAAO,MAAM,mBAAmB,8HAI/B,CAAA;AAED,eAAO,MAAM,YAAY,QAAqE,CAAA;AAE9F;;;GAGG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
|
package/build/index.js
CHANGED
|
@@ -24,7 +24,7 @@ import spawn from "cross-spawn";
|
|
|
24
24
|
// package.json
|
|
25
25
|
var package_default = {
|
|
26
26
|
name: "create-wdio",
|
|
27
|
-
version: "9.27.
|
|
27
|
+
version: "9.27.1",
|
|
28
28
|
description: "Install and setup a WebdriverIO project with all its dependencies in a single run",
|
|
29
29
|
author: "WebdriverIO Team <mail@webdriver.io>",
|
|
30
30
|
homepage: "https://github.com/webdriverio/webdriverio/tree/main/packages/create-wdio",
|
|
@@ -191,8 +191,7 @@ var SUPPORTED_PACKAGES = {
|
|
|
191
191
|
runner: [
|
|
192
192
|
{ name: "E2E Testing - of Web or Mobile Applications", value: "@wdio/local-runner$--$local$--$e2e" },
|
|
193
193
|
{ name: "Component or Unit Testing - in the browser\n > https://webdriver.io/docs/component-testing", value: "@wdio/browser-runner$--$browser$--$component" },
|
|
194
|
-
{ name: "Desktop Testing - of Electron Applications\n > https://webdriver.io/docs/desktop-testing
|
|
195
|
-
{ name: "Desktop Testing - of MacOS Applications\n > https://webdriver.io/docs/desktop-testing/macos", value: "@wdio/local-runner$--$local$--$macos" },
|
|
194
|
+
{ name: "Desktop Testing - of Electron, Tauri, or macOS Applications\n > https://webdriver.io/docs/desktop-testing", value: "@wdio/local-runner$--$local$--$desktop" },
|
|
196
195
|
{ name: "VS Code Extension Testing\n > https://webdriver.io/docs/vscode-extension-testing", value: "@wdio/local-runner$--$local$--$vscode" },
|
|
197
196
|
{ name: "Roku Testing - of OTT apps running on RokuOS\n > https://webdriver.io/docs/wdio-roku-service", value: "@wdio/local-runner$--$local$--$roku" }
|
|
198
197
|
],
|
|
@@ -243,7 +242,9 @@ var SUPPORTED_PACKAGES = {
|
|
|
243
242
|
{ name: "browserstack", value: "@wdio/browserstack-service$--$browserstack" },
|
|
244
243
|
{ name: "lighthouse", value: "@wdio/lighthouse-service$--$lighthouse" },
|
|
245
244
|
{ name: "vscode", value: "wdio-vscode-service$--$vscode" },
|
|
246
|
-
{ name: "electron", value: "wdio
|
|
245
|
+
{ name: "electron", value: "@wdio/electron-service$--$electron" },
|
|
246
|
+
{ name: "tauri", value: "@wdio/tauri-service$--$tauri" },
|
|
247
|
+
{ name: "tauri-plugin", value: "@wdio/tauri-plugin$--$tauri-plugin" },
|
|
247
248
|
{ name: "appium", value: "@wdio/appium-service$--$appium" },
|
|
248
249
|
// external
|
|
249
250
|
{ name: "camera", value: "wdio-camera-service$--$camera" },
|
|
@@ -319,6 +320,18 @@ var ElectronBuildToolChoice = /* @__PURE__ */ ((ElectronBuildToolChoice2) => {
|
|
|
319
320
|
ElectronBuildToolChoice2["SomethingElse"] = "Something else";
|
|
320
321
|
return ElectronBuildToolChoice2;
|
|
321
322
|
})(ElectronBuildToolChoice || {});
|
|
323
|
+
var DesktopFrameworkChoice = /* @__PURE__ */ ((DesktopFrameworkChoice2) => {
|
|
324
|
+
DesktopFrameworkChoice2["Electron"] = "Electron (https://www.electronjs.org/)";
|
|
325
|
+
DesktopFrameworkChoice2["Tauri"] = "Tauri (https://tauri.app/)";
|
|
326
|
+
DesktopFrameworkChoice2["MacOS"] = "Native macOS app";
|
|
327
|
+
return DesktopFrameworkChoice2;
|
|
328
|
+
})(DesktopFrameworkChoice || {});
|
|
329
|
+
var TauriDriverProviderChoice = /* @__PURE__ */ ((TauriDriverProviderChoice2) => {
|
|
330
|
+
TauriDriverProviderChoice2["Official"] = "Official tauri-driver (cross-platform, Cargo-installed)";
|
|
331
|
+
TauriDriverProviderChoice2["CrabNebula"] = "CrabNebula tauri-driver (managed cloud / drop-in)";
|
|
332
|
+
TauriDriverProviderChoice2["Embedded"] = "Embedded driver via tauri-plugin-wdio-webdriver crate";
|
|
333
|
+
return TauriDriverProviderChoice2;
|
|
334
|
+
})(TauriDriverProviderChoice || {});
|
|
322
335
|
var SUPPORTED_BROWSER_RUNNER_PRESETS = [
|
|
323
336
|
{ name: "Lit (https://lit.dev/)", value: "$--$" },
|
|
324
337
|
{ name: "Vue.js (https://vuejs.org/)", value: "@vitejs/plugin-vue$--$vue" },
|
|
@@ -335,6 +348,21 @@ function isBrowserRunner(answers) {
|
|
|
335
348
|
function getTestingPurpose(answers) {
|
|
336
349
|
return convertPackageHashToObject(answers.runner).purpose;
|
|
337
350
|
}
|
|
351
|
+
function getResolvedPurpose(answers) {
|
|
352
|
+
const raw = getTestingPurpose(answers);
|
|
353
|
+
if (raw !== "desktop") {
|
|
354
|
+
return raw;
|
|
355
|
+
}
|
|
356
|
+
switch (answers.desktopFramework) {
|
|
357
|
+
case "Tauri (https://tauri.app/)" /* Tauri */:
|
|
358
|
+
return "tauri";
|
|
359
|
+
case "Native macOS app" /* MacOS */:
|
|
360
|
+
return "macos";
|
|
361
|
+
case "Electron (https://www.electronjs.org/)" /* Electron */:
|
|
362
|
+
default:
|
|
363
|
+
return "electron";
|
|
364
|
+
}
|
|
365
|
+
}
|
|
338
366
|
var TESTING_LIBRARY_PACKAGES = {
|
|
339
367
|
react: "@testing-library/react",
|
|
340
368
|
preact: "@testing-library/preact",
|
|
@@ -397,6 +425,15 @@ var QUESTIONNAIRE = [{
|
|
|
397
425
|
*/
|
|
398
426
|
answers.preset && TESTING_LIBRARY_PACKAGES[convertPackageHashToObject(answers.preset).short]
|
|
399
427
|
)
|
|
428
|
+
}, {
|
|
429
|
+
type: "list",
|
|
430
|
+
name: "desktopFramework",
|
|
431
|
+
message: "What type of desktop application are you testing?",
|
|
432
|
+
choices: Object.values(DesktopFrameworkChoice),
|
|
433
|
+
when: (
|
|
434
|
+
/* istanbul ignore next */
|
|
435
|
+
(answers) => getTestingPurpose(answers) === "desktop"
|
|
436
|
+
)
|
|
400
437
|
}, {
|
|
401
438
|
type: "list",
|
|
402
439
|
name: "electronBuildTool",
|
|
@@ -404,7 +441,7 @@ var QUESTIONNAIRE = [{
|
|
|
404
441
|
choices: Object.values(ElectronBuildToolChoice),
|
|
405
442
|
when: (
|
|
406
443
|
/* instanbul ignore next */
|
|
407
|
-
(answers) =>
|
|
444
|
+
(answers) => getResolvedPurpose(answers) === "electron"
|
|
408
445
|
)
|
|
409
446
|
}, {
|
|
410
447
|
type: "input",
|
|
@@ -412,7 +449,33 @@ var QUESTIONNAIRE = [{
|
|
|
412
449
|
message: "What is the path to the binary of your built Electron app?",
|
|
413
450
|
when: (
|
|
414
451
|
/* istanbul ignore next */
|
|
415
|
-
(answers) =>
|
|
452
|
+
(answers) => getResolvedPurpose(answers) === "electron" && answers.electronBuildTool === "Something else" /* SomethingElse */
|
|
453
|
+
)
|
|
454
|
+
}, {
|
|
455
|
+
type: "list",
|
|
456
|
+
name: "tauriDriverProvider",
|
|
457
|
+
message: "Which WebDriver provider would you like to use for Tauri?",
|
|
458
|
+
choices: Object.values(TauriDriverProviderChoice),
|
|
459
|
+
when: (
|
|
460
|
+
/* istanbul ignore next */
|
|
461
|
+
(answers) => getResolvedPurpose(answers) === "tauri"
|
|
462
|
+
)
|
|
463
|
+
}, {
|
|
464
|
+
type: "confirm",
|
|
465
|
+
name: "tauriUseFrontendPlugin",
|
|
466
|
+
message: "Install @wdio/tauri-plugin for richer in-webview integration (browser.tauri.execute, mocking)?",
|
|
467
|
+
default: true,
|
|
468
|
+
when: (
|
|
469
|
+
/* istanbul ignore next */
|
|
470
|
+
(answers) => getResolvedPurpose(answers) === "tauri"
|
|
471
|
+
)
|
|
472
|
+
}, {
|
|
473
|
+
type: "input",
|
|
474
|
+
name: "tauriAppBinaryPath",
|
|
475
|
+
message: "Path to your built Tauri binary (leave blank to use the default `cargo tauri build` output)?",
|
|
476
|
+
when: (
|
|
477
|
+
/* istanbul ignore next */
|
|
478
|
+
(answers) => getResolvedPurpose(answers) === "tauri"
|
|
416
479
|
)
|
|
417
480
|
}, {
|
|
418
481
|
type: "list",
|
|
@@ -614,7 +677,7 @@ var QUESTIONNAIRE = [{
|
|
|
614
677
|
if (isBrowserRunner(answers)) {
|
|
615
678
|
return SUPPORTED_PACKAGES.framework.slice(0, 1);
|
|
616
679
|
}
|
|
617
|
-
if (
|
|
680
|
+
if (["electron", "tauri"].includes(getResolvedPurpose(answers))) {
|
|
618
681
|
return SUPPORTED_PACKAGES.framework.filter(
|
|
619
682
|
({ value }) => !value.startsWith("@serenity-js")
|
|
620
683
|
);
|
|
@@ -647,7 +710,7 @@ var QUESTIONNAIRE = [{
|
|
|
647
710
|
when: (
|
|
648
711
|
/* istanbul ignore next */
|
|
649
712
|
(answers) => {
|
|
650
|
-
if (["vscode", "electron", "macos"].includes(
|
|
713
|
+
if (["vscode", "electron", "tauri", "macos"].includes(getResolvedPurpose(answers)) && answers.framework.includes("cucumber")) {
|
|
651
714
|
return false;
|
|
652
715
|
}
|
|
653
716
|
return true;
|
|
@@ -700,7 +763,7 @@ var QUESTIONNAIRE = [{
|
|
|
700
763
|
* and also not needed when running VS Code tests since the service comes with
|
|
701
764
|
* its own page object implementation, nor when running Electron or MacOS tests
|
|
702
765
|
*/
|
|
703
|
-
!["vscode", "electron", "macos"].includes(
|
|
766
|
+
!["vscode", "electron", "tauri", "macos"].includes(getResolvedPurpose(answers)) && /**
|
|
704
767
|
* Serenity/JS generates Lean Page Objects by default, so there's no need to ask about it
|
|
705
768
|
* See https://serenity-js.org/handbook/web-testing/page-objects-pattern/
|
|
706
769
|
*/
|
|
@@ -770,16 +833,22 @@ var QUESTIONNAIRE = [{
|
|
|
770
833
|
if (answers.e2eEnvironment === "mobile") {
|
|
771
834
|
services.push("appium");
|
|
772
835
|
}
|
|
773
|
-
if (
|
|
836
|
+
if (getResolvedPurpose(answers) === "e2e" && isNuxtProject) {
|
|
774
837
|
services.push("nuxt");
|
|
775
838
|
}
|
|
776
|
-
if (
|
|
839
|
+
if (getResolvedPurpose(answers) === "vscode") {
|
|
777
840
|
return [SUPPORTED_PACKAGES.service.find(({ name }) => name === "vscode")];
|
|
778
|
-
} else if (
|
|
841
|
+
} else if (getResolvedPurpose(answers) === "electron") {
|
|
779
842
|
return [SUPPORTED_PACKAGES.service.find(({ name }) => name === "electron")];
|
|
780
|
-
} else if (
|
|
843
|
+
} else if (getResolvedPurpose(answers) === "tauri") {
|
|
844
|
+
const tauriEntries = [SUPPORTED_PACKAGES.service.find(({ name }) => name === "tauri")];
|
|
845
|
+
if (answers.tauriUseFrontendPlugin) {
|
|
846
|
+
tauriEntries.push(SUPPORTED_PACKAGES.service.find(({ name }) => name === "tauri-plugin"));
|
|
847
|
+
}
|
|
848
|
+
return tauriEntries;
|
|
849
|
+
} else if (getResolvedPurpose(answers) === "macos") {
|
|
781
850
|
return [SUPPORTED_PACKAGES.service.find(({ name }) => name === "appium")];
|
|
782
|
-
} else if (
|
|
851
|
+
} else if (getResolvedPurpose(answers) === "roku") {
|
|
783
852
|
return [SUPPORTED_PACKAGES.service.find(({ name }) => name === "roku")];
|
|
784
853
|
}
|
|
785
854
|
return prioServiceOrderFor(services);
|
|
@@ -791,14 +860,19 @@ var QUESTIONNAIRE = [{
|
|
|
791
860
|
} else if (answers.backend === "In the cloud using Sauce Labs" /* Saucelabs */) {
|
|
792
861
|
defaultServices.push("sauce");
|
|
793
862
|
}
|
|
794
|
-
if (answers.e2eEnvironment === "mobile" ||
|
|
863
|
+
if (answers.e2eEnvironment === "mobile" || getResolvedPurpose(answers) === "macos") {
|
|
795
864
|
defaultServices.push("appium");
|
|
796
865
|
}
|
|
797
|
-
if (
|
|
866
|
+
if (getResolvedPurpose(answers) === "vscode") {
|
|
798
867
|
defaultServices.push("vscode");
|
|
799
|
-
} else if (
|
|
868
|
+
} else if (getResolvedPurpose(answers) === "electron") {
|
|
800
869
|
defaultServices.push("electron");
|
|
801
|
-
} else if (
|
|
870
|
+
} else if (getResolvedPurpose(answers) === "tauri") {
|
|
871
|
+
defaultServices.push("tauri");
|
|
872
|
+
if (answers.tauriUseFrontendPlugin) {
|
|
873
|
+
defaultServices.push("tauri-plugin");
|
|
874
|
+
}
|
|
875
|
+
} else if (getResolvedPurpose(answers) === "roku") {
|
|
802
876
|
defaultServices.push("roku");
|
|
803
877
|
}
|
|
804
878
|
if (isNuxtProject) {
|
package/build/install/cli.js
CHANGED
|
@@ -85,7 +85,7 @@ import spawn from "cross-spawn";
|
|
|
85
85
|
// package.json
|
|
86
86
|
var package_default = {
|
|
87
87
|
name: "create-wdio",
|
|
88
|
-
version: "9.27.
|
|
88
|
+
version: "9.27.1",
|
|
89
89
|
description: "Install and setup a WebdriverIO project with all its dependencies in a single run",
|
|
90
90
|
author: "WebdriverIO Team <mail@webdriver.io>",
|
|
91
91
|
homepage: "https://github.com/webdriverio/webdriverio/tree/main/packages/create-wdio",
|
|
@@ -197,8 +197,7 @@ var SUPPORTED_PACKAGES = {
|
|
|
197
197
|
runner: [
|
|
198
198
|
{ name: "E2E Testing - of Web or Mobile Applications", value: "@wdio/local-runner$--$local$--$e2e" },
|
|
199
199
|
{ name: "Component or Unit Testing - in the browser\n > https://webdriver.io/docs/component-testing", value: "@wdio/browser-runner$--$browser$--$component" },
|
|
200
|
-
{ name: "Desktop Testing - of Electron Applications\n > https://webdriver.io/docs/desktop-testing
|
|
201
|
-
{ name: "Desktop Testing - of MacOS Applications\n > https://webdriver.io/docs/desktop-testing/macos", value: "@wdio/local-runner$--$local$--$macos" },
|
|
200
|
+
{ name: "Desktop Testing - of Electron, Tauri, or macOS Applications\n > https://webdriver.io/docs/desktop-testing", value: "@wdio/local-runner$--$local$--$desktop" },
|
|
202
201
|
{ name: "VS Code Extension Testing\n > https://webdriver.io/docs/vscode-extension-testing", value: "@wdio/local-runner$--$local$--$vscode" },
|
|
203
202
|
{ name: "Roku Testing - of OTT apps running on RokuOS\n > https://webdriver.io/docs/wdio-roku-service", value: "@wdio/local-runner$--$local$--$roku" }
|
|
204
203
|
],
|
|
@@ -249,7 +248,9 @@ var SUPPORTED_PACKAGES = {
|
|
|
249
248
|
{ name: "browserstack", value: "@wdio/browserstack-service$--$browserstack" },
|
|
250
249
|
{ name: "lighthouse", value: "@wdio/lighthouse-service$--$lighthouse" },
|
|
251
250
|
{ name: "vscode", value: "wdio-vscode-service$--$vscode" },
|
|
252
|
-
{ name: "electron", value: "wdio
|
|
251
|
+
{ name: "electron", value: "@wdio/electron-service$--$electron" },
|
|
252
|
+
{ name: "tauri", value: "@wdio/tauri-service$--$tauri" },
|
|
253
|
+
{ name: "tauri-plugin", value: "@wdio/tauri-plugin$--$tauri-plugin" },
|
|
253
254
|
{ name: "appium", value: "@wdio/appium-service$--$appium" },
|
|
254
255
|
// external
|
|
255
256
|
{ name: "camera", value: "wdio-camera-service$--$camera" },
|
|
@@ -319,6 +320,55 @@ Learn more about Serenity/JS:
|
|
|
319
320
|
function usesSerenity(answers) {
|
|
320
321
|
return answers.framework.includes("serenity-js");
|
|
321
322
|
}
|
|
323
|
+
function buildTauriBanner(driverProvider, useFrontendPlugin) {
|
|
324
|
+
const lines = [
|
|
325
|
+
"",
|
|
326
|
+
"\u{1F980} Tauri requires a couple of Rust-side additions before tests can run:",
|
|
327
|
+
""
|
|
328
|
+
];
|
|
329
|
+
if (driverProvider === "Embedded driver via tauri-plugin-wdio-webdriver crate" /* Embedded */) {
|
|
330
|
+
lines.push(
|
|
331
|
+
" 1. Add the embedded WebDriver crate to `src-tauri/Cargo.toml`:",
|
|
332
|
+
"",
|
|
333
|
+
" [dependencies]",
|
|
334
|
+
' tauri-plugin-wdio-webdriver = "1"',
|
|
335
|
+
"",
|
|
336
|
+
" 2. Register the plugin in `src-tauri/src/lib.rs`:",
|
|
337
|
+
"",
|
|
338
|
+
" tauri::Builder::default()",
|
|
339
|
+
" .plugin(tauri_plugin_wdio_webdriver::init())",
|
|
340
|
+
" // ...",
|
|
341
|
+
""
|
|
342
|
+
);
|
|
343
|
+
} else if (driverProvider === "Official tauri-driver (cross-platform, Cargo-installed)" /* Official */) {
|
|
344
|
+
lines.push(
|
|
345
|
+
" 1. Install the official tauri-driver via Cargo:",
|
|
346
|
+
"",
|
|
347
|
+
" cargo install tauri-driver --locked",
|
|
348
|
+
"",
|
|
349
|
+
" 2. On Linux, set `WEBKIT_DISABLE_DMABUF_RENDERER=1` in your shell when running tests.",
|
|
350
|
+
""
|
|
351
|
+
);
|
|
352
|
+
} else if (driverProvider === "CrabNebula tauri-driver (managed cloud / drop-in)" /* CrabNebula */) {
|
|
353
|
+
lines.push(
|
|
354
|
+
" 1. Follow the CrabNebula tauri-driver setup guide:",
|
|
355
|
+
" \u{1F517} https://crabnebula.dev/docs/tauri-driver",
|
|
356
|
+
""
|
|
357
|
+
);
|
|
358
|
+
}
|
|
359
|
+
if (useFrontendPlugin) {
|
|
360
|
+
lines.push(
|
|
361
|
+
" Frontend plugin (@wdio/tauri-plugin) was added to your npm dependencies.",
|
|
362
|
+
" See https://webdriver.io/docs/desktop-testing/tauri/plugin-setup for wiring instructions.",
|
|
363
|
+
""
|
|
364
|
+
);
|
|
365
|
+
}
|
|
366
|
+
lines.push(
|
|
367
|
+
"Full Tauri setup docs:",
|
|
368
|
+
" \u{1F517} https://webdriver.io/docs/desktop-testing/tauri"
|
|
369
|
+
);
|
|
370
|
+
return lines.join("\n");
|
|
371
|
+
}
|
|
322
372
|
var ProtocolOptions = /* @__PURE__ */ ((ProtocolOptions2) => {
|
|
323
373
|
ProtocolOptions2["HTTPS"] = "https";
|
|
324
374
|
ProtocolOptions2["HTTP"] = "http";
|
|
@@ -344,6 +394,18 @@ var ElectronBuildToolChoice = /* @__PURE__ */ ((ElectronBuildToolChoice2) => {
|
|
|
344
394
|
ElectronBuildToolChoice2["SomethingElse"] = "Something else";
|
|
345
395
|
return ElectronBuildToolChoice2;
|
|
346
396
|
})(ElectronBuildToolChoice || {});
|
|
397
|
+
var DesktopFrameworkChoice = /* @__PURE__ */ ((DesktopFrameworkChoice2) => {
|
|
398
|
+
DesktopFrameworkChoice2["Electron"] = "Electron (https://www.electronjs.org/)";
|
|
399
|
+
DesktopFrameworkChoice2["Tauri"] = "Tauri (https://tauri.app/)";
|
|
400
|
+
DesktopFrameworkChoice2["MacOS"] = "Native macOS app";
|
|
401
|
+
return DesktopFrameworkChoice2;
|
|
402
|
+
})(DesktopFrameworkChoice || {});
|
|
403
|
+
var TauriDriverProviderChoice = /* @__PURE__ */ ((TauriDriverProviderChoice2) => {
|
|
404
|
+
TauriDriverProviderChoice2["Official"] = "Official tauri-driver (cross-platform, Cargo-installed)";
|
|
405
|
+
TauriDriverProviderChoice2["CrabNebula"] = "CrabNebula tauri-driver (managed cloud / drop-in)";
|
|
406
|
+
TauriDriverProviderChoice2["Embedded"] = "Embedded driver via tauri-plugin-wdio-webdriver crate";
|
|
407
|
+
return TauriDriverProviderChoice2;
|
|
408
|
+
})(TauriDriverProviderChoice || {});
|
|
347
409
|
var SUPPORTED_BROWSER_RUNNER_PRESETS = [
|
|
348
410
|
{ name: "Lit (https://lit.dev/)", value: "$--$" },
|
|
349
411
|
{ name: "Vue.js (https://vuejs.org/)", value: "@vitejs/plugin-vue$--$vue" },
|
|
@@ -360,6 +422,21 @@ function isBrowserRunner(answers) {
|
|
|
360
422
|
function getTestingPurpose(answers) {
|
|
361
423
|
return convertPackageHashToObject(answers.runner).purpose;
|
|
362
424
|
}
|
|
425
|
+
function getResolvedPurpose(answers) {
|
|
426
|
+
const raw = getTestingPurpose(answers);
|
|
427
|
+
if (raw !== "desktop") {
|
|
428
|
+
return raw;
|
|
429
|
+
}
|
|
430
|
+
switch (answers.desktopFramework) {
|
|
431
|
+
case "Tauri (https://tauri.app/)" /* Tauri */:
|
|
432
|
+
return "tauri";
|
|
433
|
+
case "Native macOS app" /* MacOS */:
|
|
434
|
+
return "macos";
|
|
435
|
+
case "Electron (https://www.electronjs.org/)" /* Electron */:
|
|
436
|
+
default:
|
|
437
|
+
return "electron";
|
|
438
|
+
}
|
|
439
|
+
}
|
|
363
440
|
var TESTING_LIBRARY_PACKAGES = {
|
|
364
441
|
react: "@testing-library/react",
|
|
365
442
|
preact: "@testing-library/preact",
|
|
@@ -422,6 +499,15 @@ var QUESTIONNAIRE = [{
|
|
|
422
499
|
*/
|
|
423
500
|
answers.preset && TESTING_LIBRARY_PACKAGES[convertPackageHashToObject(answers.preset).short]
|
|
424
501
|
)
|
|
502
|
+
}, {
|
|
503
|
+
type: "list",
|
|
504
|
+
name: "desktopFramework",
|
|
505
|
+
message: "What type of desktop application are you testing?",
|
|
506
|
+
choices: Object.values(DesktopFrameworkChoice),
|
|
507
|
+
when: (
|
|
508
|
+
/* istanbul ignore next */
|
|
509
|
+
(answers) => getTestingPurpose(answers) === "desktop"
|
|
510
|
+
)
|
|
425
511
|
}, {
|
|
426
512
|
type: "list",
|
|
427
513
|
name: "electronBuildTool",
|
|
@@ -429,7 +515,7 @@ var QUESTIONNAIRE = [{
|
|
|
429
515
|
choices: Object.values(ElectronBuildToolChoice),
|
|
430
516
|
when: (
|
|
431
517
|
/* instanbul ignore next */
|
|
432
|
-
(answers) =>
|
|
518
|
+
(answers) => getResolvedPurpose(answers) === "electron"
|
|
433
519
|
)
|
|
434
520
|
}, {
|
|
435
521
|
type: "input",
|
|
@@ -437,7 +523,33 @@ var QUESTIONNAIRE = [{
|
|
|
437
523
|
message: "What is the path to the binary of your built Electron app?",
|
|
438
524
|
when: (
|
|
439
525
|
/* istanbul ignore next */
|
|
440
|
-
(answers) =>
|
|
526
|
+
(answers) => getResolvedPurpose(answers) === "electron" && answers.electronBuildTool === "Something else" /* SomethingElse */
|
|
527
|
+
)
|
|
528
|
+
}, {
|
|
529
|
+
type: "list",
|
|
530
|
+
name: "tauriDriverProvider",
|
|
531
|
+
message: "Which WebDriver provider would you like to use for Tauri?",
|
|
532
|
+
choices: Object.values(TauriDriverProviderChoice),
|
|
533
|
+
when: (
|
|
534
|
+
/* istanbul ignore next */
|
|
535
|
+
(answers) => getResolvedPurpose(answers) === "tauri"
|
|
536
|
+
)
|
|
537
|
+
}, {
|
|
538
|
+
type: "confirm",
|
|
539
|
+
name: "tauriUseFrontendPlugin",
|
|
540
|
+
message: "Install @wdio/tauri-plugin for richer in-webview integration (browser.tauri.execute, mocking)?",
|
|
541
|
+
default: true,
|
|
542
|
+
when: (
|
|
543
|
+
/* istanbul ignore next */
|
|
544
|
+
(answers) => getResolvedPurpose(answers) === "tauri"
|
|
545
|
+
)
|
|
546
|
+
}, {
|
|
547
|
+
type: "input",
|
|
548
|
+
name: "tauriAppBinaryPath",
|
|
549
|
+
message: "Path to your built Tauri binary (leave blank to use the default `cargo tauri build` output)?",
|
|
550
|
+
when: (
|
|
551
|
+
/* istanbul ignore next */
|
|
552
|
+
(answers) => getResolvedPurpose(answers) === "tauri"
|
|
441
553
|
)
|
|
442
554
|
}, {
|
|
443
555
|
type: "list",
|
|
@@ -639,7 +751,7 @@ var QUESTIONNAIRE = [{
|
|
|
639
751
|
if (isBrowserRunner(answers)) {
|
|
640
752
|
return SUPPORTED_PACKAGES.framework.slice(0, 1);
|
|
641
753
|
}
|
|
642
|
-
if (
|
|
754
|
+
if (["electron", "tauri"].includes(getResolvedPurpose(answers))) {
|
|
643
755
|
return SUPPORTED_PACKAGES.framework.filter(
|
|
644
756
|
({ value }) => !value.startsWith("@serenity-js")
|
|
645
757
|
);
|
|
@@ -672,7 +784,7 @@ var QUESTIONNAIRE = [{
|
|
|
672
784
|
when: (
|
|
673
785
|
/* istanbul ignore next */
|
|
674
786
|
(answers) => {
|
|
675
|
-
if (["vscode", "electron", "macos"].includes(
|
|
787
|
+
if (["vscode", "electron", "tauri", "macos"].includes(getResolvedPurpose(answers)) && answers.framework.includes("cucumber")) {
|
|
676
788
|
return false;
|
|
677
789
|
}
|
|
678
790
|
return true;
|
|
@@ -725,7 +837,7 @@ var QUESTIONNAIRE = [{
|
|
|
725
837
|
* and also not needed when running VS Code tests since the service comes with
|
|
726
838
|
* its own page object implementation, nor when running Electron or MacOS tests
|
|
727
839
|
*/
|
|
728
|
-
!["vscode", "electron", "macos"].includes(
|
|
840
|
+
!["vscode", "electron", "tauri", "macos"].includes(getResolvedPurpose(answers)) && /**
|
|
729
841
|
* Serenity/JS generates Lean Page Objects by default, so there's no need to ask about it
|
|
730
842
|
* See https://serenity-js.org/handbook/web-testing/page-objects-pattern/
|
|
731
843
|
*/
|
|
@@ -795,16 +907,22 @@ var QUESTIONNAIRE = [{
|
|
|
795
907
|
if (answers.e2eEnvironment === "mobile") {
|
|
796
908
|
services.push("appium");
|
|
797
909
|
}
|
|
798
|
-
if (
|
|
910
|
+
if (getResolvedPurpose(answers) === "e2e" && isNuxtProject) {
|
|
799
911
|
services.push("nuxt");
|
|
800
912
|
}
|
|
801
|
-
if (
|
|
913
|
+
if (getResolvedPurpose(answers) === "vscode") {
|
|
802
914
|
return [SUPPORTED_PACKAGES.service.find(({ name }) => name === "vscode")];
|
|
803
|
-
} else if (
|
|
915
|
+
} else if (getResolvedPurpose(answers) === "electron") {
|
|
804
916
|
return [SUPPORTED_PACKAGES.service.find(({ name }) => name === "electron")];
|
|
805
|
-
} else if (
|
|
917
|
+
} else if (getResolvedPurpose(answers) === "tauri") {
|
|
918
|
+
const tauriEntries = [SUPPORTED_PACKAGES.service.find(({ name }) => name === "tauri")];
|
|
919
|
+
if (answers.tauriUseFrontendPlugin) {
|
|
920
|
+
tauriEntries.push(SUPPORTED_PACKAGES.service.find(({ name }) => name === "tauri-plugin"));
|
|
921
|
+
}
|
|
922
|
+
return tauriEntries;
|
|
923
|
+
} else if (getResolvedPurpose(answers) === "macos") {
|
|
806
924
|
return [SUPPORTED_PACKAGES.service.find(({ name }) => name === "appium")];
|
|
807
|
-
} else if (
|
|
925
|
+
} else if (getResolvedPurpose(answers) === "roku") {
|
|
808
926
|
return [SUPPORTED_PACKAGES.service.find(({ name }) => name === "roku")];
|
|
809
927
|
}
|
|
810
928
|
return prioServiceOrderFor(services);
|
|
@@ -816,14 +934,19 @@ var QUESTIONNAIRE = [{
|
|
|
816
934
|
} else if (answers.backend === "In the cloud using Sauce Labs" /* Saucelabs */) {
|
|
817
935
|
defaultServices.push("sauce");
|
|
818
936
|
}
|
|
819
|
-
if (answers.e2eEnvironment === "mobile" ||
|
|
937
|
+
if (answers.e2eEnvironment === "mobile" || getResolvedPurpose(answers) === "macos") {
|
|
820
938
|
defaultServices.push("appium");
|
|
821
939
|
}
|
|
822
|
-
if (
|
|
940
|
+
if (getResolvedPurpose(answers) === "vscode") {
|
|
823
941
|
defaultServices.push("vscode");
|
|
824
|
-
} else if (
|
|
942
|
+
} else if (getResolvedPurpose(answers) === "electron") {
|
|
825
943
|
defaultServices.push("electron");
|
|
826
|
-
} else if (
|
|
944
|
+
} else if (getResolvedPurpose(answers) === "tauri") {
|
|
945
|
+
defaultServices.push("tauri");
|
|
946
|
+
if (answers.tauriUseFrontendPlugin) {
|
|
947
|
+
defaultServices.push("tauri-plugin");
|
|
948
|
+
}
|
|
949
|
+
} else if (getResolvedPurpose(answers) === "roku") {
|
|
827
950
|
defaultServices.push("roku");
|
|
828
951
|
}
|
|
829
952
|
if (isNuxtProject) {
|
|
@@ -868,7 +991,6 @@ var QUESTIONNAIRE = [{
|
|
|
868
991
|
default: true
|
|
869
992
|
}];
|
|
870
993
|
var COMMUNITY_PACKAGES_WITH_TS_SUPPORT = [
|
|
871
|
-
"wdio-electron-service",
|
|
872
994
|
"wdio-vscode-service",
|
|
873
995
|
"wdio-nuxt-service",
|
|
874
996
|
"wdio-vite-service",
|
|
@@ -1516,11 +1638,21 @@ async function runConfigCommand(parsedAnswers, npmTag) {
|
|
|
1516
1638
|
await npmInstall(parsedAnswers, npmTag);
|
|
1517
1639
|
await createWDIOConfig(parsedAnswers);
|
|
1518
1640
|
await createWDIOScript(parsedAnswers);
|
|
1641
|
+
const extraInfoParts = [];
|
|
1642
|
+
if (parsedAnswers.serenityAdapter) {
|
|
1643
|
+
extraInfoParts.push(CONFIG_HELPER_SERENITY_BANNER);
|
|
1644
|
+
}
|
|
1645
|
+
if (parsedAnswers.purpose === "tauri") {
|
|
1646
|
+
extraInfoParts.push(buildTauriBanner(
|
|
1647
|
+
parsedAnswers.rawAnswers.tauriDriverProvider,
|
|
1648
|
+
parsedAnswers.rawAnswers.tauriUseFrontendPlugin
|
|
1649
|
+
));
|
|
1650
|
+
}
|
|
1519
1651
|
console.log(
|
|
1520
1652
|
configHelperSuccessMessage({
|
|
1521
1653
|
projectRootDir: parsedAnswers.projectRootDir,
|
|
1522
1654
|
runScript: parsedAnswers.serenityAdapter ? "serenity" : "wdio",
|
|
1523
|
-
extraInfo:
|
|
1655
|
+
extraInfo: extraInfoParts.join("\n")
|
|
1524
1656
|
})
|
|
1525
1657
|
);
|
|
1526
1658
|
await runAppiumInstaller(parsedAnswers);
|
|
@@ -1587,7 +1719,7 @@ var parseAnswers = async function(yes) {
|
|
|
1587
1719
|
runner: runnerPackage.short,
|
|
1588
1720
|
preset: presetPackage.short,
|
|
1589
1721
|
framework: frameworkPackage.short,
|
|
1590
|
-
purpose:
|
|
1722
|
+
purpose: getResolvedPurpose(answers),
|
|
1591
1723
|
serenityAdapter: frameworkPackage.package === "@serenity-js/webdriverio" && frameworkPackage.purpose,
|
|
1592
1724
|
reporters: reporterPackages.map(({ short }) => short),
|
|
1593
1725
|
plugins: pluginPackages.map(({ short }) => short),
|
|
@@ -1,6 +1,25 @@
|
|
|
1
1
|
services: [<%- answers.services.map((service) => {
|
|
2
2
|
if (service === 'electron') {
|
|
3
3
|
return /*js*/`'electron'`
|
|
4
|
+
} else if (service === 'tauri') {
|
|
5
|
+
const providerMap = {
|
|
6
|
+
'Official tauri-driver (cross-platform, Cargo-installed)': 'official',
|
|
7
|
+
'CrabNebula tauri-driver (managed cloud / drop-in)': 'crabnebula',
|
|
8
|
+
'Embedded driver via tauri-plugin-wdio-webdriver crate': 'embedded',
|
|
9
|
+
}
|
|
10
|
+
const provider = providerMap[answers.rawAnswers.tauriDriverProvider] ?? 'official'
|
|
11
|
+
const binaryLine = answers.rawAnswers.tauriAppBinaryPath
|
|
12
|
+
? `\n appBinaryPath: ${JSON.stringify(answers.rawAnswers.tauriAppBinaryPath)},`
|
|
13
|
+
: ''
|
|
14
|
+
return /*js*/`[
|
|
15
|
+
'tauri',
|
|
16
|
+
{
|
|
17
|
+
driverProvider: '${provider}',${binaryLine}
|
|
18
|
+
// see https://webdriver.io/docs/desktop-testing/tauri/configuration for all options
|
|
19
|
+
}
|
|
20
|
+
]`
|
|
21
|
+
} else if (service === 'tauri-plugin') {
|
|
22
|
+
return /*js*/`'tauri-plugin'`
|
|
4
23
|
} else if (service === 'sauce' && answers.useSauceConnect) {
|
|
5
24
|
return /*js*/`[
|
|
6
25
|
'sauce',
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
<%
|
|
2
2
|
if (answers.isUsingTypeScript && answers.purpose === 'electron') {
|
|
3
|
-
%>/// <reference types="wdio
|
|
3
|
+
%>/// <reference types="@wdio/electron-service" />
|
|
4
|
+
<% }
|
|
5
|
+
|
|
6
|
+
if (answers.isUsingTypeScript && answers.purpose === 'tauri') {
|
|
7
|
+
%>/// <reference types="@wdio/tauri-service" />
|
|
4
8
|
<% }
|
|
5
9
|
|
|
6
10
|
if (answers.isUsingTypeScript && answers.serenityAdapter) {
|
package/build/types.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { BackendChoice, RegionOptions, ElectronBuildToolChoice } from './constants.js';
|
|
1
|
+
import type { BackendChoice, RegionOptions, ElectronBuildToolChoice, DesktopFrameworkChoice, TauriDriverProviderChoice } from './constants.js';
|
|
2
2
|
import type { PackageJson as typeFestPackageJson } from 'type-fest';
|
|
3
3
|
import type { Package as normalizePackage } from 'normalize-package-data';
|
|
4
4
|
export type NormalizedPackageJson = PackageJson & normalizePackage;
|
|
@@ -16,6 +16,10 @@ export interface Questionnair {
|
|
|
16
16
|
electronAppBinaryPath?: string;
|
|
17
17
|
electronBuildTool?: ElectronBuildToolChoice;
|
|
18
18
|
electronBuilderConfigPath?: string;
|
|
19
|
+
desktopFramework?: DesktopFrameworkChoice;
|
|
20
|
+
tauriDriverProvider?: TauriDriverProviderChoice;
|
|
21
|
+
tauriUseFrontendPlugin?: boolean;
|
|
22
|
+
tauriAppBinaryPath?: string;
|
|
19
23
|
backend?: BackendChoice;
|
|
20
24
|
hostname?: string;
|
|
21
25
|
port?: string;
|
package/build/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,uBAAuB,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/build/utils/index.js
CHANGED
|
@@ -88,7 +88,7 @@ async function detectCompiler(answers) {
|
|
|
88
88
|
// package.json
|
|
89
89
|
var package_default = {
|
|
90
90
|
name: "create-wdio",
|
|
91
|
-
version: "9.27.
|
|
91
|
+
version: "9.27.1",
|
|
92
92
|
description: "Install and setup a WebdriverIO project with all its dependencies in a single run",
|
|
93
93
|
author: "WebdriverIO Team <mail@webdriver.io>",
|
|
94
94
|
homepage: "https://github.com/webdriverio/webdriverio/tree/main/packages/create-wdio",
|
|
@@ -195,8 +195,7 @@ var SUPPORTED_PACKAGES = {
|
|
|
195
195
|
runner: [
|
|
196
196
|
{ name: "E2E Testing - of Web or Mobile Applications", value: "@wdio/local-runner$--$local$--$e2e" },
|
|
197
197
|
{ name: "Component or Unit Testing - in the browser\n > https://webdriver.io/docs/component-testing", value: "@wdio/browser-runner$--$browser$--$component" },
|
|
198
|
-
{ name: "Desktop Testing - of Electron Applications\n > https://webdriver.io/docs/desktop-testing
|
|
199
|
-
{ name: "Desktop Testing - of MacOS Applications\n > https://webdriver.io/docs/desktop-testing/macos", value: "@wdio/local-runner$--$local$--$macos" },
|
|
198
|
+
{ name: "Desktop Testing - of Electron, Tauri, or macOS Applications\n > https://webdriver.io/docs/desktop-testing", value: "@wdio/local-runner$--$local$--$desktop" },
|
|
200
199
|
{ name: "VS Code Extension Testing\n > https://webdriver.io/docs/vscode-extension-testing", value: "@wdio/local-runner$--$local$--$vscode" },
|
|
201
200
|
{ name: "Roku Testing - of OTT apps running on RokuOS\n > https://webdriver.io/docs/wdio-roku-service", value: "@wdio/local-runner$--$local$--$roku" }
|
|
202
201
|
],
|
|
@@ -247,7 +246,9 @@ var SUPPORTED_PACKAGES = {
|
|
|
247
246
|
{ name: "browserstack", value: "@wdio/browserstack-service$--$browserstack" },
|
|
248
247
|
{ name: "lighthouse", value: "@wdio/lighthouse-service$--$lighthouse" },
|
|
249
248
|
{ name: "vscode", value: "wdio-vscode-service$--$vscode" },
|
|
250
|
-
{ name: "electron", value: "wdio
|
|
249
|
+
{ name: "electron", value: "@wdio/electron-service$--$electron" },
|
|
250
|
+
{ name: "tauri", value: "@wdio/tauri-service$--$tauri" },
|
|
251
|
+
{ name: "tauri-plugin", value: "@wdio/tauri-plugin$--$tauri-plugin" },
|
|
251
252
|
{ name: "appium", value: "@wdio/appium-service$--$appium" },
|
|
252
253
|
// external
|
|
253
254
|
{ name: "camera", value: "wdio-camera-service$--$camera" },
|
|
@@ -323,6 +324,18 @@ var ElectronBuildToolChoice = /* @__PURE__ */ ((ElectronBuildToolChoice2) => {
|
|
|
323
324
|
ElectronBuildToolChoice2["SomethingElse"] = "Something else";
|
|
324
325
|
return ElectronBuildToolChoice2;
|
|
325
326
|
})(ElectronBuildToolChoice || {});
|
|
327
|
+
var DesktopFrameworkChoice = /* @__PURE__ */ ((DesktopFrameworkChoice2) => {
|
|
328
|
+
DesktopFrameworkChoice2["Electron"] = "Electron (https://www.electronjs.org/)";
|
|
329
|
+
DesktopFrameworkChoice2["Tauri"] = "Tauri (https://tauri.app/)";
|
|
330
|
+
DesktopFrameworkChoice2["MacOS"] = "Native macOS app";
|
|
331
|
+
return DesktopFrameworkChoice2;
|
|
332
|
+
})(DesktopFrameworkChoice || {});
|
|
333
|
+
var TauriDriverProviderChoice = /* @__PURE__ */ ((TauriDriverProviderChoice2) => {
|
|
334
|
+
TauriDriverProviderChoice2["Official"] = "Official tauri-driver (cross-platform, Cargo-installed)";
|
|
335
|
+
TauriDriverProviderChoice2["CrabNebula"] = "CrabNebula tauri-driver (managed cloud / drop-in)";
|
|
336
|
+
TauriDriverProviderChoice2["Embedded"] = "Embedded driver via tauri-plugin-wdio-webdriver crate";
|
|
337
|
+
return TauriDriverProviderChoice2;
|
|
338
|
+
})(TauriDriverProviderChoice || {});
|
|
326
339
|
var SUPPORTED_BROWSER_RUNNER_PRESETS = [
|
|
327
340
|
{ name: "Lit (https://lit.dev/)", value: "$--$" },
|
|
328
341
|
{ name: "Vue.js (https://vuejs.org/)", value: "@vitejs/plugin-vue$--$vue" },
|
|
@@ -339,6 +352,21 @@ function isBrowserRunner(answers) {
|
|
|
339
352
|
function getTestingPurpose(answers) {
|
|
340
353
|
return convertPackageHashToObject(answers.runner).purpose;
|
|
341
354
|
}
|
|
355
|
+
function getResolvedPurpose(answers) {
|
|
356
|
+
const raw = getTestingPurpose(answers);
|
|
357
|
+
if (raw !== "desktop") {
|
|
358
|
+
return raw;
|
|
359
|
+
}
|
|
360
|
+
switch (answers.desktopFramework) {
|
|
361
|
+
case "Tauri (https://tauri.app/)" /* Tauri */:
|
|
362
|
+
return "tauri";
|
|
363
|
+
case "Native macOS app" /* MacOS */:
|
|
364
|
+
return "macos";
|
|
365
|
+
case "Electron (https://www.electronjs.org/)" /* Electron */:
|
|
366
|
+
default:
|
|
367
|
+
return "electron";
|
|
368
|
+
}
|
|
369
|
+
}
|
|
342
370
|
var TESTING_LIBRARY_PACKAGES = {
|
|
343
371
|
react: "@testing-library/react",
|
|
344
372
|
preact: "@testing-library/preact",
|
|
@@ -401,6 +429,15 @@ var QUESTIONNAIRE = [{
|
|
|
401
429
|
*/
|
|
402
430
|
answers.preset && TESTING_LIBRARY_PACKAGES[convertPackageHashToObject(answers.preset).short]
|
|
403
431
|
)
|
|
432
|
+
}, {
|
|
433
|
+
type: "list",
|
|
434
|
+
name: "desktopFramework",
|
|
435
|
+
message: "What type of desktop application are you testing?",
|
|
436
|
+
choices: Object.values(DesktopFrameworkChoice),
|
|
437
|
+
when: (
|
|
438
|
+
/* istanbul ignore next */
|
|
439
|
+
(answers) => getTestingPurpose(answers) === "desktop"
|
|
440
|
+
)
|
|
404
441
|
}, {
|
|
405
442
|
type: "list",
|
|
406
443
|
name: "electronBuildTool",
|
|
@@ -408,7 +445,7 @@ var QUESTIONNAIRE = [{
|
|
|
408
445
|
choices: Object.values(ElectronBuildToolChoice),
|
|
409
446
|
when: (
|
|
410
447
|
/* instanbul ignore next */
|
|
411
|
-
(answers) =>
|
|
448
|
+
(answers) => getResolvedPurpose(answers) === "electron"
|
|
412
449
|
)
|
|
413
450
|
}, {
|
|
414
451
|
type: "input",
|
|
@@ -416,7 +453,33 @@ var QUESTIONNAIRE = [{
|
|
|
416
453
|
message: "What is the path to the binary of your built Electron app?",
|
|
417
454
|
when: (
|
|
418
455
|
/* istanbul ignore next */
|
|
419
|
-
(answers) =>
|
|
456
|
+
(answers) => getResolvedPurpose(answers) === "electron" && answers.electronBuildTool === "Something else" /* SomethingElse */
|
|
457
|
+
)
|
|
458
|
+
}, {
|
|
459
|
+
type: "list",
|
|
460
|
+
name: "tauriDriverProvider",
|
|
461
|
+
message: "Which WebDriver provider would you like to use for Tauri?",
|
|
462
|
+
choices: Object.values(TauriDriverProviderChoice),
|
|
463
|
+
when: (
|
|
464
|
+
/* istanbul ignore next */
|
|
465
|
+
(answers) => getResolvedPurpose(answers) === "tauri"
|
|
466
|
+
)
|
|
467
|
+
}, {
|
|
468
|
+
type: "confirm",
|
|
469
|
+
name: "tauriUseFrontendPlugin",
|
|
470
|
+
message: "Install @wdio/tauri-plugin for richer in-webview integration (browser.tauri.execute, mocking)?",
|
|
471
|
+
default: true,
|
|
472
|
+
when: (
|
|
473
|
+
/* istanbul ignore next */
|
|
474
|
+
(answers) => getResolvedPurpose(answers) === "tauri"
|
|
475
|
+
)
|
|
476
|
+
}, {
|
|
477
|
+
type: "input",
|
|
478
|
+
name: "tauriAppBinaryPath",
|
|
479
|
+
message: "Path to your built Tauri binary (leave blank to use the default `cargo tauri build` output)?",
|
|
480
|
+
when: (
|
|
481
|
+
/* istanbul ignore next */
|
|
482
|
+
(answers) => getResolvedPurpose(answers) === "tauri"
|
|
420
483
|
)
|
|
421
484
|
}, {
|
|
422
485
|
type: "list",
|
|
@@ -618,7 +681,7 @@ var QUESTIONNAIRE = [{
|
|
|
618
681
|
if (isBrowserRunner(answers)) {
|
|
619
682
|
return SUPPORTED_PACKAGES.framework.slice(0, 1);
|
|
620
683
|
}
|
|
621
|
-
if (
|
|
684
|
+
if (["electron", "tauri"].includes(getResolvedPurpose(answers))) {
|
|
622
685
|
return SUPPORTED_PACKAGES.framework.filter(
|
|
623
686
|
({ value }) => !value.startsWith("@serenity-js")
|
|
624
687
|
);
|
|
@@ -651,7 +714,7 @@ var QUESTIONNAIRE = [{
|
|
|
651
714
|
when: (
|
|
652
715
|
/* istanbul ignore next */
|
|
653
716
|
(answers) => {
|
|
654
|
-
if (["vscode", "electron", "macos"].includes(
|
|
717
|
+
if (["vscode", "electron", "tauri", "macos"].includes(getResolvedPurpose(answers)) && answers.framework.includes("cucumber")) {
|
|
655
718
|
return false;
|
|
656
719
|
}
|
|
657
720
|
return true;
|
|
@@ -704,7 +767,7 @@ var QUESTIONNAIRE = [{
|
|
|
704
767
|
* and also not needed when running VS Code tests since the service comes with
|
|
705
768
|
* its own page object implementation, nor when running Electron or MacOS tests
|
|
706
769
|
*/
|
|
707
|
-
!["vscode", "electron", "macos"].includes(
|
|
770
|
+
!["vscode", "electron", "tauri", "macos"].includes(getResolvedPurpose(answers)) && /**
|
|
708
771
|
* Serenity/JS generates Lean Page Objects by default, so there's no need to ask about it
|
|
709
772
|
* See https://serenity-js.org/handbook/web-testing/page-objects-pattern/
|
|
710
773
|
*/
|
|
@@ -774,16 +837,22 @@ var QUESTIONNAIRE = [{
|
|
|
774
837
|
if (answers.e2eEnvironment === "mobile") {
|
|
775
838
|
services.push("appium");
|
|
776
839
|
}
|
|
777
|
-
if (
|
|
840
|
+
if (getResolvedPurpose(answers) === "e2e" && isNuxtProject) {
|
|
778
841
|
services.push("nuxt");
|
|
779
842
|
}
|
|
780
|
-
if (
|
|
843
|
+
if (getResolvedPurpose(answers) === "vscode") {
|
|
781
844
|
return [SUPPORTED_PACKAGES.service.find(({ name }) => name === "vscode")];
|
|
782
|
-
} else if (
|
|
845
|
+
} else if (getResolvedPurpose(answers) === "electron") {
|
|
783
846
|
return [SUPPORTED_PACKAGES.service.find(({ name }) => name === "electron")];
|
|
784
|
-
} else if (
|
|
847
|
+
} else if (getResolvedPurpose(answers) === "tauri") {
|
|
848
|
+
const tauriEntries = [SUPPORTED_PACKAGES.service.find(({ name }) => name === "tauri")];
|
|
849
|
+
if (answers.tauriUseFrontendPlugin) {
|
|
850
|
+
tauriEntries.push(SUPPORTED_PACKAGES.service.find(({ name }) => name === "tauri-plugin"));
|
|
851
|
+
}
|
|
852
|
+
return tauriEntries;
|
|
853
|
+
} else if (getResolvedPurpose(answers) === "macos") {
|
|
785
854
|
return [SUPPORTED_PACKAGES.service.find(({ name }) => name === "appium")];
|
|
786
|
-
} else if (
|
|
855
|
+
} else if (getResolvedPurpose(answers) === "roku") {
|
|
787
856
|
return [SUPPORTED_PACKAGES.service.find(({ name }) => name === "roku")];
|
|
788
857
|
}
|
|
789
858
|
return prioServiceOrderFor(services);
|
|
@@ -795,14 +864,19 @@ var QUESTIONNAIRE = [{
|
|
|
795
864
|
} else if (answers.backend === "In the cloud using Sauce Labs" /* Saucelabs */) {
|
|
796
865
|
defaultServices.push("sauce");
|
|
797
866
|
}
|
|
798
|
-
if (answers.e2eEnvironment === "mobile" ||
|
|
867
|
+
if (answers.e2eEnvironment === "mobile" || getResolvedPurpose(answers) === "macos") {
|
|
799
868
|
defaultServices.push("appium");
|
|
800
869
|
}
|
|
801
|
-
if (
|
|
870
|
+
if (getResolvedPurpose(answers) === "vscode") {
|
|
802
871
|
defaultServices.push("vscode");
|
|
803
|
-
} else if (
|
|
872
|
+
} else if (getResolvedPurpose(answers) === "electron") {
|
|
804
873
|
defaultServices.push("electron");
|
|
805
|
-
} else if (
|
|
874
|
+
} else if (getResolvedPurpose(answers) === "tauri") {
|
|
875
|
+
defaultServices.push("tauri");
|
|
876
|
+
if (answers.tauriUseFrontendPlugin) {
|
|
877
|
+
defaultServices.push("tauri-plugin");
|
|
878
|
+
}
|
|
879
|
+
} else if (getResolvedPurpose(answers) === "roku") {
|
|
806
880
|
defaultServices.push("roku");
|
|
807
881
|
}
|
|
808
882
|
if (isNuxtProject) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-wdio",
|
|
3
|
-
"version": "9.27.
|
|
3
|
+
"version": "9.27.2",
|
|
4
4
|
"description": "Install and setup a WebdriverIO project with all its dependencies in a single run",
|
|
5
5
|
"author": "WebdriverIO Team <mail@webdriver.io>",
|
|
6
6
|
"homepage": "https://github.com/webdriverio/webdriverio/tree/main/packages/create-wdio",
|
|
@@ -77,5 +77,5 @@
|
|
|
77
77
|
"publishConfig": {
|
|
78
78
|
"access": "public"
|
|
79
79
|
},
|
|
80
|
-
"gitHead": "
|
|
80
|
+
"gitHead": "a95ab41f3ac1fd9510341a21d365a359528212ac"
|
|
81
81
|
}
|