testplane 8.22.5 → 8.23.0
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/package.json +6 -2
- package/build/src/browser/new-browser.js +33 -3
- package/build/src/browser/new-browser.js.map +1 -1
- package/build/src/browser-installer/chrome/browser.d.ts +3 -1
- package/build/src/browser-installer/chrome/browser.js +18 -5
- package/build/src/browser-installer/chrome/browser.js.map +1 -1
- package/build/src/browser-installer/chrome/driver.js +7 -4
- package/build/src/browser-installer/chrome/driver.js.map +1 -1
- package/build/src/browser-installer/chrome/index.js +10 -4
- package/build/src/browser-installer/chrome/index.js.map +1 -1
- package/build/src/browser-installer/chromium/browser.js +7 -4
- package/build/src/browser-installer/chromium/browser.js.map +1 -1
- package/build/src/browser-installer/chromium/driver.js +2 -2
- package/build/src/browser-installer/chromium/driver.js.map +1 -1
- package/build/src/browser-installer/chromium/revisions/autogenerated/linux.json +41 -0
- package/build/src/browser-installer/chromium/revisions/autogenerated/mac.json +41 -0
- package/build/src/browser-installer/chromium/revisions/autogenerated/mac_arm.json +22 -0
- package/build/src/browser-installer/chromium/revisions/autogenerated/win32.json +41 -0
- package/build/src/browser-installer/chromium/revisions/autogenerated/win64.json +41 -0
- package/build/src/browser-installer/chromium/utils.js +2 -24
- package/build/src/browser-installer/chromium/utils.js.map +1 -1
- package/build/src/browser-installer/constants.d.ts +4 -2
- package/build/src/browser-installer/constants.js +5 -3
- package/build/src/browser-installer/constants.js.map +1 -1
- package/build/src/browser-installer/edge/driver.js +7 -4
- package/build/src/browser-installer/edge/driver.js.map +1 -1
- package/build/src/browser-installer/edge/index.js +1 -2
- package/build/src/browser-installer/edge/index.js.map +1 -1
- package/build/src/browser-installer/firefox/browser.d.ts +3 -1
- package/build/src/browser-installer/firefox/browser.js +18 -5
- package/build/src/browser-installer/firefox/browser.js.map +1 -1
- package/build/src/browser-installer/firefox/driver.js +7 -4
- package/build/src/browser-installer/firefox/driver.js.map +1 -1
- package/build/src/browser-installer/firefox/index.js +7 -3
- package/build/src/browser-installer/firefox/index.js.map +1 -1
- package/build/src/browser-installer/index.d.ts +1 -1
- package/build/src/browser-installer/index.js +2 -2
- package/build/src/browser-installer/index.js.map +1 -1
- package/build/src/browser-installer/install.d.ts +5 -3
- package/build/src/browser-installer/install.js +39 -37
- package/build/src/browser-installer/install.js.map +1 -1
- package/build/src/browser-installer/registry/cli-progress-bar.d.ts +1 -0
- package/build/src/browser-installer/registry/cli-progress-bar.js +11 -8
- package/build/src/browser-installer/registry/cli-progress-bar.js.map +1 -1
- package/build/src/browser-installer/registry/index.d.ts +31 -5
- package/build/src/browser-installer/registry/index.js +174 -111
- package/build/src/browser-installer/registry/index.js.map +1 -1
- package/build/src/browser-installer/run.d.ts +2 -2
- package/build/src/browser-installer/run.js +12 -8
- package/build/src/browser-installer/run.js.map +1 -1
- package/build/src/browser-installer/ubuntu-packages/apt.d.ts +4 -0
- package/build/src/browser-installer/ubuntu-packages/apt.js +132 -0
- package/build/src/browser-installer/ubuntu-packages/apt.js.map +1 -0
- package/build/src/browser-installer/ubuntu-packages/autogenerated/ubuntu-20-dependencies.json +42 -0
- package/build/src/browser-installer/ubuntu-packages/autogenerated/ubuntu-22-dependencies.json +42 -0
- package/build/src/browser-installer/ubuntu-packages/autogenerated/ubuntu-24-dependencies.json +42 -0
- package/build/src/browser-installer/ubuntu-packages/index.d.ts +4 -0
- package/build/src/browser-installer/ubuntu-packages/index.js +85 -0
- package/build/src/browser-installer/ubuntu-packages/index.js.map +1 -0
- package/build/src/browser-installer/ubuntu-packages/utils.d.ts +4 -0
- package/build/src/browser-installer/ubuntu-packages/utils.js +59 -0
- package/build/src/browser-installer/ubuntu-packages/utils.js.map +1 -0
- package/build/src/browser-installer/utils.d.ts +3 -2
- package/build/src/browser-installer/utils.js +18 -13
- package/build/src/browser-installer/utils.js.map +1 -1
- package/build/src/browser-pool/webdriver-pool.d.ts +1 -2
- package/build/src/browser-pool/webdriver-pool.js +15 -15
- package/build/src/browser-pool/webdriver-pool.js.map +1 -1
- package/package.json +6 -2
- package/build/src/browser-installer/chromium/revisions/linux.d.ts +0 -2
- package/build/src/browser-installer/chromium/revisions/linux.js +0 -45
- package/build/src/browser-installer/chromium/revisions/linux.js.map +0 -1
- package/build/src/browser-installer/chromium/revisions/mac.d.ts +0 -2
- package/build/src/browser-installer/chromium/revisions/mac.js +0 -45
- package/build/src/browser-installer/chromium/revisions/mac.js.map +0 -1
- package/build/src/browser-installer/chromium/revisions/mac_arm.d.ts +0 -2
- package/build/src/browser-installer/chromium/revisions/mac_arm.js +0 -25
- package/build/src/browser-installer/chromium/revisions/mac_arm.js.map +0 -1
- package/build/src/browser-installer/chromium/revisions/win32.d.ts +0 -2
- package/build/src/browser-installer/chromium/revisions/win32.js +0 -45
- package/build/src/browser-installer/chromium/revisions/win32.js.map +0 -1
- package/build/src/browser-installer/chromium/revisions/win64.d.ts +0 -2
- package/build/src/browser-installer/chromium/revisions/win64.js +0 -45
- package/build/src/browser-installer/chromium/revisions/win64.js.map +0 -1
|
@@ -26,136 +26,199 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
26
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
|
|
30
|
-
const fs_extra_1 = require("fs-extra");
|
|
29
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
30
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
31
31
|
const path_1 = __importDefault(require("path"));
|
|
32
32
|
const utils_1 = require("../utils");
|
|
33
33
|
const utils_2 = require("../firefox/utils");
|
|
34
34
|
const logger_1 = __importDefault(require("../../utils/logger"));
|
|
35
|
-
const
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
35
|
+
const getRegistryBinaryKey = (name, platform) => `${name}_${platform}`;
|
|
36
|
+
const getRegistryOsPackagesKey = (name, version) => `${name}_${version}`;
|
|
37
|
+
const getCliProgressBar = lodash_1.default.once(async () => {
|
|
38
|
+
const { createBrowserDownloadProgressBar } = await Promise.resolve().then(() => __importStar(require("./cli-progress-bar")));
|
|
39
|
+
return createBrowserDownloadProgressBar();
|
|
40
|
+
});
|
|
41
|
+
const logDownloadingOsPackagesWarningOnce = lodash_1.default.once((osName) => {
|
|
42
|
+
logger_1.default.warn(`Downloading extra ${osName} packages`);
|
|
43
|
+
});
|
|
44
|
+
const logDownloadingBrowsersWarningOnce = lodash_1.default.once(() => {
|
|
45
|
+
logger_1.default.warn("Downloading Testplane browsers");
|
|
46
|
+
logger_1.default.warn("Note: this is one-time action. It may take a while...");
|
|
47
|
+
});
|
|
48
|
+
class Registry {
|
|
49
|
+
constructor() {
|
|
50
|
+
this.registryPath = (0, utils_1.getRegistryPath)();
|
|
51
|
+
this.registry = this.readRegistry();
|
|
44
52
|
}
|
|
45
|
-
|
|
46
|
-
|
|
53
|
+
async getBinaryPath(name, platform, version) {
|
|
54
|
+
const registryKey = getRegistryBinaryKey(name, platform);
|
|
55
|
+
if (!this.registry.binaries[registryKey]) {
|
|
56
|
+
throw new Error(`Binary '${name}' on '${platform}' is not installed`);
|
|
57
|
+
}
|
|
58
|
+
if (!this.registry.binaries[registryKey][version]) {
|
|
59
|
+
throw new Error(`Version '${version}' of driver '${name}' on '${platform}' is not installed`);
|
|
60
|
+
}
|
|
61
|
+
const binaryRelativePath = await this.registry.binaries[registryKey][version];
|
|
62
|
+
(0, utils_1.browserInstallerDebug)(`resolved '${name}@${version}' on ${platform} to ${binaryRelativePath}`);
|
|
63
|
+
return path_1.default.resolve(this.registryPath, binaryRelativePath);
|
|
47
64
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
};
|
|
52
|
-
exports.getBinaryPath = getBinaryPath;
|
|
53
|
-
const addBinaryToRegistry = (name, platform, version, absoluteBinaryPath) => {
|
|
54
|
-
const registryKey = getRegistryKey(name, platform);
|
|
55
|
-
const relativePath = path_1.default.relative(registryPath, absoluteBinaryPath);
|
|
56
|
-
registry[registryKey] ||= {};
|
|
57
|
-
registry[registryKey][version] = relativePath;
|
|
58
|
-
const replacer = (_, value) => {
|
|
59
|
-
if (value.then) {
|
|
60
|
-
return;
|
|
65
|
+
async getOsPackagesPath(name, version) {
|
|
66
|
+
const registryKey = getRegistryOsPackagesKey(name, version);
|
|
67
|
+
if (!this.registry.osPackages[registryKey]) {
|
|
68
|
+
throw new Error(`Packages for ${name}@${version} are not installed`);
|
|
61
69
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
(0, fs_extra_1.outputJSONSync)(registryPath, registry, { replacer });
|
|
66
|
-
};
|
|
67
|
-
const getBinaryVersions = (name, platform) => {
|
|
68
|
-
const registryKey = getRegistryKey(name, platform);
|
|
69
|
-
if (!registry[registryKey]) {
|
|
70
|
-
return [];
|
|
70
|
+
const osPackagesRelativePath = await this.registry.osPackages[registryKey];
|
|
71
|
+
(0, utils_1.browserInstallerDebug)(`resolved os packages for '${name}@${version}' to ${osPackagesRelativePath}`);
|
|
72
|
+
return path_1.default.resolve(this.registryPath, osPackagesRelativePath);
|
|
71
73
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
74
|
+
hasOsPackages(name, version) {
|
|
75
|
+
return Boolean(this.registry.osPackages[getRegistryOsPackagesKey(name, version)]);
|
|
76
|
+
}
|
|
77
|
+
getMatchedDriverVersion(driverName, platform, browserVersion) {
|
|
78
|
+
const registryKey = getRegistryBinaryKey(driverName, platform);
|
|
79
|
+
if (!this.registry.binaries[registryKey]) {
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
if (driverName === utils_1.Driver.CHROMEDRIVER || driverName === utils_1.Driver.EDGEDRIVER) {
|
|
83
|
+
const milestone = (0, utils_1.getMilestone)(browserVersion);
|
|
84
|
+
const buildIds = this.getBinaryVersions(driverName, platform);
|
|
85
|
+
const suitableBuildIds = buildIds.filter(buildId => buildId.startsWith(milestone));
|
|
86
|
+
if (!suitableBuildIds.length) {
|
|
87
|
+
return null;
|
|
88
|
+
}
|
|
89
|
+
return suitableBuildIds.sort(utils_1.semverVersionsComparator).pop();
|
|
90
|
+
}
|
|
91
|
+
if (driverName === utils_1.Driver.GECKODRIVER) {
|
|
92
|
+
const buildIds = Object.keys(this.registry.binaries[registryKey]);
|
|
93
|
+
const buildIdsSorted = buildIds.sort(utils_1.semverVersionsComparator);
|
|
94
|
+
return buildIdsSorted.length ? buildIdsSorted[buildIdsSorted.length - 1] : null;
|
|
95
|
+
}
|
|
78
96
|
return null;
|
|
79
97
|
}
|
|
80
|
-
|
|
81
|
-
const
|
|
82
|
-
|
|
83
|
-
|
|
98
|
+
getMatchedBrowserVersion(browserName, platform, browserVersion) {
|
|
99
|
+
const registryKey = getRegistryBinaryKey(browserName, platform);
|
|
100
|
+
if (!this.registry.binaries[registryKey]) {
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
let buildPrefix;
|
|
104
|
+
switch (browserName) {
|
|
105
|
+
case utils_1.Browser.CHROME:
|
|
106
|
+
buildPrefix = (0, utils_1.normalizeChromeVersion)(browserVersion);
|
|
107
|
+
break;
|
|
108
|
+
case utils_1.Browser.CHROMIUM:
|
|
109
|
+
buildPrefix = (0, utils_1.getMilestone)(browserVersion);
|
|
110
|
+
break;
|
|
111
|
+
case utils_1.Browser.FIREFOX:
|
|
112
|
+
buildPrefix = (0, utils_2.getFirefoxBuildId)(browserVersion);
|
|
113
|
+
break;
|
|
114
|
+
default:
|
|
115
|
+
return null;
|
|
116
|
+
}
|
|
117
|
+
const buildIds = this.getBinaryVersions(browserName, platform);
|
|
118
|
+
const suitableBuildIds = buildIds.filter(buildId => buildId.startsWith(buildPrefix));
|
|
84
119
|
if (!suitableBuildIds.length) {
|
|
85
120
|
return null;
|
|
86
121
|
}
|
|
87
|
-
|
|
122
|
+
const firefoxVersionComparator = (a, b) => {
|
|
123
|
+
a = a.slice(a.indexOf("_") + 1);
|
|
124
|
+
b = b.slice(b.indexOf("_") + 1);
|
|
125
|
+
// Firefox has versions like "stable_131.0a1" and "stable_129.0b9"
|
|
126
|
+
// Parsing raw numbers as hex values is needed in order to distinguish "129.0b9" and "129.0b7" for example
|
|
127
|
+
return parseInt(a.replace(".", ""), 16) - parseInt(b.replace(".", ""), 16);
|
|
128
|
+
};
|
|
129
|
+
const comparator = browserName === utils_1.Browser.FIREFOX ? firefoxVersionComparator : utils_1.semverVersionsComparator;
|
|
130
|
+
const suitableBuildIdsSorted = suitableBuildIds.sort(comparator);
|
|
131
|
+
return suitableBuildIdsSorted[suitableBuildIdsSorted.length - 1];
|
|
88
132
|
}
|
|
89
|
-
|
|
90
|
-
const
|
|
91
|
-
|
|
92
|
-
|
|
133
|
+
async installBinary(name, platform, version, installFn) {
|
|
134
|
+
const registryKey = getRegistryBinaryKey(name, platform);
|
|
135
|
+
if (this.hasBinaryVersion(name, platform, version)) {
|
|
136
|
+
return this.getBinaryPath(name, platform, version);
|
|
137
|
+
}
|
|
138
|
+
(0, utils_1.browserInstallerDebug)(`installing '${name}@${version}' on '${platform}'`);
|
|
139
|
+
const progressBar = await getCliProgressBar();
|
|
140
|
+
const originalDownloadProgressCallback = progressBar.register(name, version);
|
|
141
|
+
const downloadProgressCallback = (...args) => {
|
|
142
|
+
logDownloadingBrowsersWarningOnce();
|
|
143
|
+
return originalDownloadProgressCallback(...args);
|
|
144
|
+
};
|
|
145
|
+
const installPromise = installFn(downloadProgressCallback)
|
|
146
|
+
.then(executablePath => {
|
|
147
|
+
this.addBinaryToRegistry(name, platform, version, executablePath);
|
|
148
|
+
return executablePath;
|
|
149
|
+
})
|
|
150
|
+
.catch(err => {
|
|
151
|
+
progressBar?.stop();
|
|
152
|
+
throw err;
|
|
153
|
+
});
|
|
154
|
+
this.registry.binaries[registryKey] ||= {};
|
|
155
|
+
this.registry.binaries[registryKey][version] = installPromise;
|
|
156
|
+
return installPromise;
|
|
93
157
|
}
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
158
|
+
async installOsPackages(osName, version, installFn) {
|
|
159
|
+
const registryKey = getRegistryOsPackagesKey(osName, version);
|
|
160
|
+
if (this.hasOsPackages(osName, version)) {
|
|
161
|
+
return this.getOsPackagesPath(osName, version);
|
|
162
|
+
}
|
|
163
|
+
(0, utils_1.browserInstallerDebug)(`installing os packages for '${osName}@${version}'`);
|
|
164
|
+
logDownloadingOsPackagesWarningOnce(osName);
|
|
165
|
+
const progressBar = await getCliProgressBar();
|
|
166
|
+
const downloadProgressCallback = progressBar.register(`extra packages for ${osName}`, version);
|
|
167
|
+
const installPromise = installFn(downloadProgressCallback)
|
|
168
|
+
.then(packagesPath => {
|
|
169
|
+
this.addOsPackageToRegistry(osName, version, packagesPath);
|
|
170
|
+
return packagesPath;
|
|
171
|
+
})
|
|
172
|
+
.catch(err => {
|
|
173
|
+
progressBar.stop();
|
|
174
|
+
throw err;
|
|
175
|
+
});
|
|
176
|
+
this.registry.osPackages[registryKey] = installPromise;
|
|
177
|
+
return installPromise;
|
|
101
178
|
}
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
case utils_1.Browser.FIREFOX:
|
|
111
|
-
buildPrefix = (0, utils_2.getFirefoxBuildId)(browserVersion);
|
|
112
|
-
break;
|
|
113
|
-
default:
|
|
114
|
-
return null;
|
|
179
|
+
readRegistry() {
|
|
180
|
+
const registry = fs_extra_1.default.existsSync(this.registryPath)
|
|
181
|
+
? fs_extra_1.default.readJSONSync(this.registryPath)
|
|
182
|
+
: {};
|
|
183
|
+
registry.binaries ||= {};
|
|
184
|
+
registry.osPackages ||= {};
|
|
185
|
+
registry.meta ||= { version: 1 };
|
|
186
|
+
return registry;
|
|
115
187
|
}
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
188
|
+
writeRegistry() {
|
|
189
|
+
const replacer = (_, value) => {
|
|
190
|
+
if (value.then) {
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
return value;
|
|
194
|
+
};
|
|
195
|
+
fs_extra_1.default.outputJSONSync(this.registryPath, this.registry, { replacer });
|
|
120
196
|
}
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
const comparator = browserName === utils_1.Browser.FIREFOX ? firefoxVersionComparator : utils_1.semverVersionsComparator;
|
|
129
|
-
const suitableBuildIdsSorted = suitableBuildIds.sort(comparator);
|
|
130
|
-
return suitableBuildIdsSorted[suitableBuildIdsSorted.length - 1];
|
|
131
|
-
};
|
|
132
|
-
exports.getMatchedBrowserVersion = getMatchedBrowserVersion;
|
|
133
|
-
const installBinary = async (name, platform, version, installFn) => {
|
|
134
|
-
const registryKey = getRegistryKey(name, platform);
|
|
135
|
-
if (hasBinaryVersion(name, platform, version)) {
|
|
136
|
-
return (0, exports.getBinaryPath)(name, platform, version);
|
|
197
|
+
addBinaryToRegistry(name, platform, version, absoluteBinaryPath) {
|
|
198
|
+
const registryKey = getRegistryBinaryKey(name, platform);
|
|
199
|
+
const relativePath = path_1.default.relative(this.registryPath, absoluteBinaryPath);
|
|
200
|
+
this.registry.binaries[registryKey] ||= {};
|
|
201
|
+
this.registry.binaries[registryKey][version] = relativePath;
|
|
202
|
+
(0, utils_1.browserInstallerDebug)(`adding '${name}@${version}' on '${platform}' to registry at ${relativePath}`);
|
|
203
|
+
this.writeRegistry();
|
|
137
204
|
}
|
|
138
|
-
(
|
|
139
|
-
|
|
140
|
-
const
|
|
141
|
-
|
|
205
|
+
addOsPackageToRegistry(name, version, absolutePackagesDirPath) {
|
|
206
|
+
const registryKey = getRegistryOsPackagesKey(name, version);
|
|
207
|
+
const relativePath = path_1.default.relative(this.registryPath, absolutePackagesDirPath);
|
|
208
|
+
this.registry.osPackages[registryKey] = relativePath;
|
|
209
|
+
(0, utils_1.browserInstallerDebug)(`adding os packages for '${name}@${version}' to registry at ${relativePath}`);
|
|
210
|
+
this.writeRegistry();
|
|
142
211
|
}
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
if (!
|
|
146
|
-
|
|
147
|
-
logger_1.default.warn("Note: this is one-time action. It may take a while...");
|
|
148
|
-
warnedFirstTimeInstall = true;
|
|
212
|
+
getBinaryVersions(name, platform) {
|
|
213
|
+
const registryKey = getRegistryBinaryKey(name, platform);
|
|
214
|
+
if (!this.registry.binaries[registryKey]) {
|
|
215
|
+
return [];
|
|
149
216
|
}
|
|
150
|
-
return
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
registry[registryKey][version] = installPromise;
|
|
158
|
-
return installPromise;
|
|
159
|
-
};
|
|
160
|
-
exports.installBinary = installBinary;
|
|
217
|
+
return Object.keys(this.registry.binaries[registryKey]);
|
|
218
|
+
}
|
|
219
|
+
hasBinaryVersion(name, platform, version) {
|
|
220
|
+
return this.getBinaryVersions(name, platform).includes(version);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
exports.default = new Registry();
|
|
161
224
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/browser-installer/registry/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/browser-installer/registry/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
/// <reference types="node" />
|
|
3
3
|
/// <reference types="node" />
|
|
4
4
|
import type { ChildProcess } from "child_process";
|
|
5
|
-
import { type
|
|
6
|
-
export declare const runBrowserDriver: (
|
|
5
|
+
import { type SupportedBrowser } from "./utils";
|
|
6
|
+
export declare const runBrowserDriver: (browserName: SupportedBrowser, browserVersion: string, { debug }?: {
|
|
7
7
|
debug?: boolean | undefined;
|
|
8
8
|
}) => Promise<{
|
|
9
9
|
gridUrl: string;
|
|
@@ -24,19 +24,23 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
26
|
exports.runBrowserDriver = void 0;
|
|
27
|
+
const install_1 = require("./install");
|
|
27
28
|
const utils_1 = require("./utils");
|
|
28
|
-
const runBrowserDriver = async (
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
const runBrowserDriver = async (browserName, browserVersion, { debug = false } = {}) => {
|
|
30
|
+
const installBrowserOpts = { shouldInstallWebDriver: true, shouldInstallUbuntuPackages: true };
|
|
31
|
+
await (0, install_1.installBrowser)(browserName, browserVersion, installBrowserOpts);
|
|
32
|
+
switch (browserName) {
|
|
33
|
+
case utils_1.Browser.CHROME:
|
|
34
|
+
case utils_1.Browser.CHROMIUM:
|
|
31
35
|
return Promise.resolve().then(() => __importStar(require("./chrome"))).then(module => module.runChromeDriver(browserVersion, { debug }));
|
|
32
|
-
case utils_1.
|
|
33
|
-
return Promise.resolve().then(() => __importStar(require("./edge"))).then(module => module.runEdgeDriver(browserVersion, { debug }));
|
|
34
|
-
case utils_1.Driver.GECKODRIVER:
|
|
36
|
+
case utils_1.Browser.FIREFOX:
|
|
35
37
|
return Promise.resolve().then(() => __importStar(require("./firefox"))).then(module => module.runGeckoDriver(browserVersion, { debug }));
|
|
36
|
-
case utils_1.
|
|
38
|
+
case utils_1.Browser.EDGE:
|
|
39
|
+
return Promise.resolve().then(() => __importStar(require("./edge"))).then(module => module.runEdgeDriver(browserVersion, { debug }));
|
|
40
|
+
case utils_1.Browser.SAFARI:
|
|
37
41
|
return Promise.resolve().then(() => __importStar(require("./safari"))).then(module => module.runSafariDriver({ debug }));
|
|
38
42
|
default:
|
|
39
|
-
throw new Error(`Invalid
|
|
43
|
+
throw new Error(`Invalid browser: ${browserName}. Expected one of: ${Object.values(utils_1.Browser).join(", ")}`);
|
|
40
44
|
}
|
|
41
45
|
};
|
|
42
46
|
exports.runBrowserDriver = runBrowserDriver;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/browser-installer/run.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/browser-installer/run.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,uCAA2C;AAC3C,mCAAyD;AAElD,MAAM,gBAAgB,GAAG,KAAK,EACjC,WAA6B,EAC7B,cAAsB,EACtB,EAAE,KAAK,GAAG,KAAK,EAAE,GAAG,EAAE,EAC2C,EAAE;IACnE,MAAM,kBAAkB,GAAG,EAAE,sBAAsB,EAAE,IAAI,EAAE,2BAA2B,EAAE,IAAI,EAAE,CAAC;IAE/F,MAAM,IAAA,wBAAc,EAAC,WAAW,EAAE,cAAc,EAAE,kBAAkB,CAAC,CAAC;IAEtE,QAAQ,WAAW,EAAE,CAAC;QAClB,KAAK,eAAO,CAAC,MAAM,CAAC;QACpB,KAAK,eAAO,CAAC,QAAQ;YACjB,OAAO,kDAAO,UAAU,IAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QAChG,KAAK,eAAO,CAAC,OAAO;YAChB,OAAO,kDAAO,WAAW,IAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QAChG,KAAK,eAAO,CAAC,IAAI;YACb,OAAO,kDAAO,QAAQ,IAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QAC5F,KAAK,eAAO,CAAC,MAAM;YACf,OAAO,kDAAO,UAAU,IAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QAChF;YACI,MAAM,IAAI,KAAK,CAAC,oBAAoB,WAAW,sBAAsB,MAAM,CAAC,MAAM,CAAC,eAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClH,CAAC;AACL,CAAC,CAAC;AAtBW,QAAA,gBAAgB,oBAsB3B"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.installUbuntuPackages = void 0;
|
|
7
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
8
|
+
const os_1 = __importDefault(require("os"));
|
|
9
|
+
const path_1 = __importDefault(require("path"));
|
|
10
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
11
|
+
const child_process_1 = require("child_process");
|
|
12
|
+
const utils_1 = require("./utils");
|
|
13
|
+
const utils_2 = require("../utils");
|
|
14
|
+
const constants_1 = require("../constants");
|
|
15
|
+
/** @link https://manpages.org/apt-cache/8 */
|
|
16
|
+
const resolveTransitiveDependencies = async (directDependencies) => {
|
|
17
|
+
await Promise.all(["apt-cache", "grep", "sort"].map(utils_1.ensureUnixBinaryExists));
|
|
18
|
+
const aptDependsArgs = [
|
|
19
|
+
"recurse",
|
|
20
|
+
"no-recommends",
|
|
21
|
+
"no-suggests",
|
|
22
|
+
"no-conflicts",
|
|
23
|
+
"no-breaks",
|
|
24
|
+
"no-replaces",
|
|
25
|
+
"no-enhances",
|
|
26
|
+
]
|
|
27
|
+
.map(arg => `--${arg}`)
|
|
28
|
+
.join(" ");
|
|
29
|
+
const listDependencies = (dependencyName) => new Promise((resolve, reject) => {
|
|
30
|
+
(0, child_process_1.exec)(`apt-cache depends ${aptDependsArgs} "${dependencyName}" | grep "^\\w" | sort -u`, (err, result) => {
|
|
31
|
+
if (err) {
|
|
32
|
+
reject(err);
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
resolve(result.split(/\s+/).filter(Boolean));
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
const fullDependencies = await Promise.all(directDependencies.map(listDependencies));
|
|
40
|
+
const rawDependencies = lodash_1.default.flatten(fullDependencies);
|
|
41
|
+
return lodash_1.default.uniq(rawDependencies);
|
|
42
|
+
};
|
|
43
|
+
/** @link https://manpages.org/apt/8 */
|
|
44
|
+
const filterNotExistingDependencies = async (dependencies) => {
|
|
45
|
+
if (!dependencies.length) {
|
|
46
|
+
return [];
|
|
47
|
+
}
|
|
48
|
+
await (0, utils_1.ensureUnixBinaryExists)("apt");
|
|
49
|
+
const existingDependencies = await new Promise((resolve, reject) => {
|
|
50
|
+
(0, child_process_1.exec)(`apt list ${dependencies.join(" ")} --installed`, (err, result) => {
|
|
51
|
+
if (err) {
|
|
52
|
+
reject(err);
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
const lines = result.split("\n");
|
|
56
|
+
const existingDependencies = lines
|
|
57
|
+
.map(line => {
|
|
58
|
+
const slashIndex = line.indexOf("/");
|
|
59
|
+
if (slashIndex === -1) {
|
|
60
|
+
return "";
|
|
61
|
+
}
|
|
62
|
+
return line.slice(0, slashIndex);
|
|
63
|
+
})
|
|
64
|
+
.filter(Boolean);
|
|
65
|
+
resolve(existingDependencies);
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
return lodash_1.default.difference(dependencies, existingDependencies);
|
|
70
|
+
};
|
|
71
|
+
/** @link https://manpages.org/apt-get/8 */
|
|
72
|
+
const downloadUbuntuPackages = async (dependencies, targetDir) => {
|
|
73
|
+
if (!dependencies.length) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
await (0, utils_1.ensureUnixBinaryExists)("apt-get");
|
|
77
|
+
return new Promise((resolve, reject) => {
|
|
78
|
+
(0, child_process_1.exec)(`apt-get download ${dependencies.join(" ")}`, { cwd: targetDir }, err => {
|
|
79
|
+
if (err) {
|
|
80
|
+
reject(err);
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
resolve();
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
};
|
|
88
|
+
/** @link https://manpages.org/dpkg */
|
|
89
|
+
const unpackUbuntuPackages = async (packagesDir, destination) => {
|
|
90
|
+
await Promise.all([(0, utils_1.ensureUnixBinaryExists)("dpkg"), fs_extra_1.default.ensureDir(destination)]);
|
|
91
|
+
return new Promise((resolve, reject) => {
|
|
92
|
+
(0, child_process_1.exec)(`for pkg in *.deb; do dpkg -x $pkg ${destination}; done`, { cwd: packagesDir }, err => {
|
|
93
|
+
if (err) {
|
|
94
|
+
reject(err);
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
resolve();
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
};
|
|
102
|
+
const installUbuntuPackages = async (packages, destination, { downloadProgressCallback }) => {
|
|
103
|
+
if (!packages) {
|
|
104
|
+
(0, utils_2.browserInstallerDebug)(`There are no ubuntu packages to install`);
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
const withRecursiveDependencies = await resolveTransitiveDependencies(packages);
|
|
108
|
+
downloadProgressCallback(40);
|
|
109
|
+
(0, utils_2.browserInstallerDebug)(`Resolved direct packages to ${withRecursiveDependencies.length} dependencies`);
|
|
110
|
+
const dependenciesToDownload = await filterNotExistingDependencies(withRecursiveDependencies);
|
|
111
|
+
downloadProgressCallback(70);
|
|
112
|
+
const missingPkgs = constants_1.MANDATORY_UBUNTU_PACKAGES_TO_BE_INSTALLED.filter(pkg => dependenciesToDownload.includes(pkg));
|
|
113
|
+
if (missingPkgs.length) {
|
|
114
|
+
throw new Error([
|
|
115
|
+
"Missing some packages, which needs to be installed manually",
|
|
116
|
+
`Use \`apt-get install ${missingPkgs.join(" ")}\` to install them`,
|
|
117
|
+
`Then run "testplane install-deps" again\n`,
|
|
118
|
+
].join("\n"));
|
|
119
|
+
}
|
|
120
|
+
(0, utils_2.browserInstallerDebug)(`There are ${dependenciesToDownload.length} deb packages to download`);
|
|
121
|
+
if (!dependenciesToDownload.length) {
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
const tmpPackagesDir = await fs_extra_1.default.mkdtemp(path_1.default.join(os_1.default.tmpdir(), "testplane-ubuntu-apt-packages"));
|
|
125
|
+
await downloadUbuntuPackages(dependenciesToDownload, tmpPackagesDir);
|
|
126
|
+
downloadProgressCallback(100);
|
|
127
|
+
(0, utils_2.browserInstallerDebug)(`Downloaded ${dependenciesToDownload.length} deb packages`);
|
|
128
|
+
await unpackUbuntuPackages(tmpPackagesDir, destination);
|
|
129
|
+
(0, utils_2.browserInstallerDebug)(`Unpacked ${dependenciesToDownload.length} deb packages`);
|
|
130
|
+
};
|
|
131
|
+
exports.installUbuntuPackages = installUbuntuPackages;
|
|
132
|
+
//# sourceMappingURL=apt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apt.js","sourceRoot":"","sources":["../../../../src/browser-installer/ubuntu-packages/apt.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
[
|
|
2
|
+
"libasound2",
|
|
3
|
+
"libatk-bridge2.0-0",
|
|
4
|
+
"libatk1.0-0",
|
|
5
|
+
"libatspi2.0-0",
|
|
6
|
+
"libc6",
|
|
7
|
+
"libcairo2",
|
|
8
|
+
"libcups2",
|
|
9
|
+
"libdbus-1-3",
|
|
10
|
+
"libdbus-glib-1-2",
|
|
11
|
+
"libdrm2",
|
|
12
|
+
"libexpat1",
|
|
13
|
+
"libgbm1",
|
|
14
|
+
"libgcc-s1",
|
|
15
|
+
"libgdk-pixbuf2.0-0",
|
|
16
|
+
"libglib2.0-0",
|
|
17
|
+
"libgtk-3-0",
|
|
18
|
+
"libnspr4",
|
|
19
|
+
"libnss3",
|
|
20
|
+
"libpango-1.0-0",
|
|
21
|
+
"libpangocairo-1.0-0",
|
|
22
|
+
"libstdc++6",
|
|
23
|
+
"libudev1",
|
|
24
|
+
"libuuid1",
|
|
25
|
+
"libx11-6",
|
|
26
|
+
"libx11-xcb1",
|
|
27
|
+
"libxcb-dri3-0",
|
|
28
|
+
"libxcb1",
|
|
29
|
+
"libxcomposite1",
|
|
30
|
+
"libxcursor1",
|
|
31
|
+
"libxdamage1",
|
|
32
|
+
"libxext6",
|
|
33
|
+
"libxfixes3",
|
|
34
|
+
"libxi6",
|
|
35
|
+
"libxkbcommon0",
|
|
36
|
+
"libxrandr2",
|
|
37
|
+
"libxrender1",
|
|
38
|
+
"libxshmfence1",
|
|
39
|
+
"libxss1",
|
|
40
|
+
"libxt6",
|
|
41
|
+
"libxtst6"
|
|
42
|
+
]
|