Closed toddtarsi closed 1 month ago
**Action:** test |
**Failed stage:** [Run all tests and also use xvfb](https://github.com/SeleniumHQ/selenium-ide/actions/runs/8969051465/job/24629701435) [❌] |
**Failure summary:**
The action failed due to multiple issues:ENOENT: no such file or directory errors occurred because the system could not find the specified files for creating binary links in various packages. dependencies are requested or used. TypeError occurred in the download-driver.js script, specifically a failure to read properties of an undefined object, which suggests that the response object expected from a download operation was not properly received or handled. |
Relevant error logs:```yaml 1: ##[group]Operating System 2: Ubuntu ... 175: .../node_modules/@bazel/hide-bazel-files postinstall: Done 176: .../node_modules/@bazel/typescript postinstall: Done 177: .../node_modules/electron postinstall$ node install.js 178: .../node_modules/electron postinstall$ node install.js 179: .../node_modules/electron-chromedriver install$ node ./download-chromedriver.js 180: .../node_modules/electron postinstall: Done 181: .../node_modules/electron postinstall: Done 182: .../node_modules/electron-chromedriver install: Done 183: WARN Failed to create bin at /home/runner/work/selenium-ide/selenium-ide/packages/code-export-csharp-nunit/node_modules/.bin/side-code-export. ENOENT: no such file or directory, open '/home/runner/work/selenium-ide/selenium-ide/packages/side-code-export/dist/bin.js' 184: WARN Failed to create bin at /home/runner/work/selenium-ide/selenium-ide/packages/code-export-java-junit/node_modules/.bin/side-code-export. ENOENT: no such file or directory, open '/home/runner/work/selenium-ide/selenium-ide/packages/side-code-export/dist/bin.js' 185: WARN Failed to create bin at /home/runner/work/selenium-ide/selenium-ide/packages/code-export-csharp-commons/node_modules/.bin/side-code-export. ENOENT: no such file or directory, open '/home/runner/work/selenium-ide/selenium-ide/packages/side-code-export/dist/bin.js' 186: WARN Failed to create bin at /home/runner/work/selenium-ide/selenium-ide/packages/code-export-javascript-mocha/node_modules/.bin/side-code-export. ENOENT: no such file or directory, open '/home/runner/work/selenium-ide/selenium-ide/packages/side-code-export/dist/bin.js' 187: WARN Failed to create bin at /home/runner/work/selenium-ide/selenium-ide/packages/code-export-python-pytest/node_modules/.bin/side-code-export. ENOENT: no such file or directory, open '/home/runner/work/selenium-ide/selenium-ide/packages/side-code-export/dist/bin.js' 188: WARN Failed to create bin at /home/runner/work/selenium-ide/selenium-ide/packages/code-export-ruby-rspec/node_modules/.bin/side-code-export. ENOENT: no such file or directory, open '/home/runner/work/selenium-ide/selenium-ide/packages/side-code-export/dist/bin.js' 189: WARN Failed to create bin at /home/runner/work/selenium-ide/selenium-ide/packages/code-export-csharp-xunit/node_modules/.bin/side-code-export. ENOENT: no such file or directory, open '/home/runner/work/selenium-ide/selenium-ide/packages/side-code-export/dist/bin.js' 190: WARN Failed to create bin at /home/runner/work/selenium-ide/selenium-ide/packages/side-example-suite/node_modules/.bin/side-code-export. ENOENT: no such file or directory, open '/home/runner/work/selenium-ide/selenium-ide/packages/side-code-export/dist/bin.js' 191: WARN Failed to create bin at /home/runner/work/selenium-ide/selenium-ide/packages/selenium-ide/node_modules/.bin/side-code-export. ENOENT: no such file or directory, open '/home/runner/work/selenium-ide/selenium-ide/packages/side-code-export/dist/bin.js' 192: WARN Failed to create bin at /home/runner/work/selenium-ide/selenium-ide/packages/code-export-csharp-commons/node_modules/.bin/side-code-export. ENOENT: no such file or directory, open '/home/runner/work/selenium-ide/selenium-ide/packages/code-export-csharp-commons/node_modules/side-code-export/dist/bin.js' 193: WARN Failed to create bin at /home/runner/work/selenium-ide/selenium-ide/packages/code-export-javascript-mocha/node_modules/.bin/side-code-export. ENOENT: no such file or directory, open '/home/runner/work/selenium-ide/selenium-ide/packages/code-export-javascript-mocha/node_modules/side-code-export/dist/bin.js' 194: WARN Failed to create bin at /home/runner/work/selenium-ide/selenium-ide/packages/code-export-java-junit/node_modules/.bin/side-code-export. ENOENT: no such file or directory, open '/home/runner/work/selenium-ide/selenium-ide/packages/code-export-java-junit/node_modules/side-code-export/dist/bin.js' 195: WARN Failed to create bin at /home/runner/work/selenium-ide/selenium-ide/packages/code-export-ruby-rspec/node_modules/.bin/side-code-export. ENOENT: no such file or directory, open '/home/runner/work/selenium-ide/selenium-ide/packages/code-export-ruby-rspec/node_modules/side-code-export/dist/bin.js' 196: WARN Failed to create bin at /home/runner/work/selenium-ide/selenium-ide/packages/code-export-python-pytest/node_modules/.bin/side-code-export. ENOENT: no such file or directory, open '/home/runner/work/selenium-ide/selenium-ide/packages/code-export-python-pytest/node_modules/side-code-export/dist/bin.js' 197: WARN Failed to create bin at /home/runner/work/selenium-ide/selenium-ide/packages/code-export-csharp-nunit/node_modules/.bin/side-code-export. ENOENT: no such file or directory, open '/home/runner/work/selenium-ide/selenium-ide/packages/code-export-csharp-nunit/node_modules/side-code-export/dist/bin.js' 198: WARN Failed to create bin at /home/runner/work/selenium-ide/selenium-ide/packages/code-export-csharp-xunit/node_modules/.bin/side-code-export. ENOENT: no such file or directory, open '/home/runner/work/selenium-ide/selenium-ide/packages/code-export-csharp-xunit/node_modules/side-code-export/dist/bin.js' 199: WARN Failed to create bin at /home/runner/work/selenium-ide/selenium-ide/packages/side-example-suite/node_modules/.bin/side-code-export. ENOENT: no such file or directory, open '/home/runner/work/selenium-ide/selenium-ide/packages/side-example-suite/node_modules/side-code-export/dist/bin.js' 200: WARN Failed to create bin at /home/runner/work/selenium-ide/selenium-ide/packages/selenium-ide/node_modules/.bin/side-code-export. ENOENT: no such file or directory, open '/home/runner/work/selenium-ide/selenium-ide/packages/selenium-ide/node_modules/side-code-export/dist/bin.js' ... 295: packages/selenium-ide build:webpack: @ ./src/browser/windows/Splash/renderer.tsx 39:31-59 296: packages/selenium-ide build:webpack: [1m[33mWARNING[39m[22m in [1m../side-model/dist/I18N/index.js[39m[22m [1m[32m36:82-92[39m[22m 297: packages/selenium-ide build:webpack: [1mCritical dependency: the request of a dependency is an expression[39m[22m 298: packages/selenium-ide build:webpack: @ ../side-model/dist/index.js 38:13-30 299: packages/selenium-ide build:webpack: @ ./src/browser/I18N/en/index.ts 4:21-54 300: packages/selenium-ide build:webpack: @ ./src/browser/I18N/keys.ts 6:29-44 301: packages/selenium-ide build:webpack: @ ./src/browser/windows/Splash/renderer.tsx 39:31-59 302: packages/selenium-ide build:webpack: 2 warnings have detailed information that is not shown. 303: packages/selenium-ide build:webpack: Use 'stats.errorDetails: true' resp. '--stats-error-details' to show it. ... 335: packages/selenium-ide build:webpack: [1mCritical dependency: the request of a dependency is an expression[39m[22m 336: packages/selenium-ide build:webpack: @ ../side-model/dist/index.js 38:13-30 337: packages/selenium-ide build:webpack: @ ../side-api/dist/models/state/index.js 18:21-54 338: packages/selenium-ide build:webpack: @ ../side-api/dist/models/index.js 18:13-31 339: packages/selenium-ide build:webpack: @ ../side-api/dist/index.js 49:13-32 340: packages/selenium-ide build:webpack: @ ./src/browser/api/index.ts 7:19-50 19:17-48 341: packages/selenium-ide build:webpack: @ ./src/browser/windows/PlaybackWindow/preload.ts 6:30-52 342: packages/selenium-ide build:webpack: 2 warnings have detailed information that is not shown. 343: packages/selenium-ide build:webpack: Use 'stats.errorDetails: true' resp. '--stats-error-details' to show it. ... 370: packages/selenium-ide build:webpack: [1mCritical dependency: the request of a dependency is an expression[39m[22m 371: packages/selenium-ide build:webpack: @ ../side-model/dist/index.js 38:13-30 372: packages/selenium-ide build:webpack: @ ../side-api/dist/models/state/index.js 18:21-54 373: packages/selenium-ide build:webpack: @ ../side-api/dist/models/index.js 18:13-31 374: packages/selenium-ide build:webpack: @ ../side-api/dist/index.js 49:13-32 375: packages/selenium-ide build:webpack: @ ./src/browser/api/bidi.ts 7:19-50 19:17-48 376: packages/selenium-ide build:webpack: @ ./src/browser/windows/PlaybackWindowBidi/preload.ts 6:31-58 377: packages/selenium-ide build:webpack: 2 warnings have detailed information that is not shown. 378: packages/selenium-ide build:webpack: Use 'stats.errorDetails: true' resp. '--stats-error-details' to show it. ... 440: packages/selenium-ide build:webpack: [1m[33mWARNING[39m[22m in [1m./src/main/session/controllers/System/index.ts[39m[22m [1m[32m77:114-124[39m[22m 441: packages/selenium-ide build:webpack: [1mCritical dependency: the request of a dependency is an expression[39m[22m 442: packages/selenium-ide build:webpack: @ ./src/main/session/index.ts 20:33-64 443: packages/selenium-ide build:webpack: @ ./src/main/index.ts 11:34-54 444: packages/selenium-ide build:webpack: [1m[33mWARNING[39m[22m in [1m../../node_modules/.pnpm/v8-compile-cache@2.3.0/node_modules/v8-compile-cache/v8-compile-cache.js[39m[22m [1m[32m153:42-49[39m[22m 445: packages/selenium-ide build:webpack: [1mCritical dependency: require function is used in a way in which dependencies cannot be statically extracted[39m[22m 446: packages/selenium-ide build:webpack: @ ./src/main/index.ts 6:0-27 447: packages/selenium-ide build:webpack: 6 warnings have detailed information that is not shown. 448: packages/selenium-ide build:webpack: Use 'stats.errorDetails: true' resp. '--stats-error-details' to show it. ... 597: updating chromedriver... 598: Downloading driver from https://storage.googleapis.com/chrome-for-testing-public/124.0.6367.60/linux64/chromedriver-linux64.zip to /home/runner/work/selenium-ide/selenium-ide/drivers/chromedriver 599: Downloaded driver from https://storage.googleapis.com/chrome-for-testing-public/124.0.6367.60/linux64/chromedriver-linux64.zip to /home/runner/work/selenium-ide/selenium-ide/drivers/chromedriver 600: updating geckodriver... 601: Downloading driver from https://github.com/mozilla/geckodriver/releases/download/v0.34.0/geckodriver-v0.34.0-linux64.tar.gz to /home/runner/work/selenium-ide/selenium-ide/drivers/geckodriver 602: /home/runner/work/selenium-ide/selenium-ide/packages/get-driver/dist/download-driver.js:81 603: response?.body?.pipe(tar_1.default.t({ 604: ^ 605: TypeError: Cannot read properties of undefined (reading 't') 606: at /home/runner/work/selenium-ide/selenium-ide/packages/get-driver/dist/download-driver.js:81:44 607: at new Promise ( |
PR Description updated to latest commit (https://github.com/SeleniumHQ/selenium-ide/commit/1246e6fa8e6c27a979bd0b9ac2f31afd6cdb115d)
⏱️ Estimated effort to review [1-5] | 3, because the PR includes multiple changes across various package versions and a significant refactor in the main session controller logic. The changes are spread across multiple files and packages, which requires a thorough review to ensure compatibility and functionality. |
🧪 Relevant tests | No |
⚡ Possible issues | Possible Bug: The refactored logic in `SystemController` for handling startup errors and driver processes could introduce bugs if not properly tested, especially since it involves conditional logic based on the browser type. |
Performance Concern: Multiple asynchronous operations and error handling in the `SystemController` could lead to unhandled promise rejections or memory leaks if not managed correctly. | |
🔒 Security concerns | No |
Category | Suggestions | |||||||||||||
Maintainability |
Improve variable naming for clarity.___ **Consider using a more descriptive variable name thanbrowser for the object holding browser information. This will improve code readability and maintainability.** [packages/selenium-ide/src/main/session/controllers/System/index.ts [85]](https://github.com/SeleniumHQ/selenium-ide/pull/1822/files#diff-4dbd893211cc75242de37cef110ee13c64879374f43a7a94be947eacbc059bb2R85-R85) ```diff -const browser = this.session.store.get('browserInfo') +const browserInfo = this.session.store.get('browserInfo') ```
| Refactor repeated code into a function to enhance maintainability.___ **Refactor the repeated code for starting the process and setting the browser informationinto a separate function to enhance code reuse and maintainability.** [packages/selenium-ide/src/main/session/controllers/System/index.ts [101-102]](https://github.com/SeleniumHQ/selenium-ide/pull/1822/files#diff-4dbd893211cc75242de37cef110ee13c64879374f43a7a94be947eacbc059bb2R101-R102) ```diff -startupError = await this.session.driver.startProcess( - this.session.store.get('browserInfo') -) +async function restartBrowserWithNewInfo(browserInfo) { + await this.session.store.set('browserInfo', browserInfo); + return await this.session.driver.startProcess(browserInfo); +} +// Usage +startupError = await restartBrowserWithNewInfo({ + browser: 'electron', + useBidi: false, + version: '', +}); ```
| Update the dependency version to maintain consistency across related packages.___ **Update the version of@seleniumhq/code-export-csharp-commons in @seleniumhq/code-export-csharp-nunit to match the latest version (4.0.4 ) to maintain consistency across packages that depend on each other.** [packages/code-export-csharp-commons/package.json [21]](https://github.com/SeleniumHQ/selenium-ide/pull/1822/files#diff-684ff69e79978f0a48461228c6104f6d4d66e14dacbfa892f5b8d3edb8980ba6R21-R21) ```diff -"@seleniumhq/code-export-csharp-commons": "^4.0.1", +"@seleniumhq/code-export-csharp-commons": "^4.0.4", ``` Best practice |
| Improve log message formatting to avoid unintended whitespace.___ **Avoid using multiline strings with backticks for logging, as it can lead to unintendedwhitespace in logs. Use single-line strings or concatenate strings instead.** [packages/selenium-ide/src/main/session/controllers/System/index.ts [92-94]](https://github.com/SeleniumHQ/selenium-ide/pull/1822/files#diff-4dbd893211cc75242de37cef110ee13c64879374f43a7a94be947eacbc059bb2R92-R94) ```diff -console.warn(` - Failed to locate non-electron driver on startup, - Resetting to electron driver. -`) +console.warn("Failed to locate non-electron driver on startup, Resetting to electron driver.") ```
| Use string concatenation for error messages to improve readability.___ **Use template literals or string concatenation to include variable values in stringsinstead of using backticks for multi-line strings, which can be error-prone and less readable.** [packages/selenium-ide/src/main/session/controllers/System/index.ts [108]](https://github.com/SeleniumHQ/selenium-ide/pull/1822/files#diff-4dbd893211cc75242de37cef110ee13c64879374f43a7a94be947eacbc059bb2R108-R108) ```diff -await this.crash( - `Unable to startup due to chromedriver error: ${startupError}` -) +await this.crash("Unable to startup due to chromedriver error: " + startupError) ```
| Lock dependency versions to specific numbers to ensure consistent behavior.___ **Consider locking the version of the new dependencies to a specific version rather thanusing the caret (^) version range. This can help ensure consistent behavior across different environments and deployments by avoiding unexpected updates.** [packages/side-runner/package.json [26-27]](https://github.com/SeleniumHQ/selenium-ide/pull/1822/files#diff-96a04a4a55cf679557012a90b0f02f60559e36ae5c00f2490d23e54e2cee4cc4R26-R27) ```diff -"@seleniumhq/side-model": "^4.0.2", -"@seleniumhq/side-runtime": "^4.0.7", +"@seleniumhq/side-model": "4.0.2", +"@seleniumhq/side-runtime": "4.0.7", ``` Possible issue |
| Add error handling for potentially undefined store values.___ **Consider handling the case wherebrowserInfo might not be set in the store, which could lead to runtime errors. Implement a check or default value.** [packages/selenium-ide/src/main/session/controllers/System/index.ts [85]](https://github.com/SeleniumHQ/selenium-ide/pull/1822/files#diff-4dbd893211cc75242de37cef110ee13c64879374f43a7a94be947eacbc059bb2R85-R85) ```diff -const browser = this.session.store.get('browserInfo') +const browser = this.session.store.get('browserInfo') || { browser: 'default', useBidi: true, version: 'latest' }; ```
| Verify compatibility of major version increments to prevent breaking changes.___ **Verify that the major version increment in@seleniumhq/side-model does not introduce breaking changes that could affect other packages depending on it, especially when used in production environments.** [packages/side-model/package.json [3]](https://github.com/SeleniumHQ/selenium-ide/pull/1822/files#diff-f8769268d0e433706f21e19708392318e9ff47e8ba5730085434feba9f84870aR3-R3) ```diff -"version": "4.0.2", +"version": "4.0.2", # Ensure compatibility with other packages ``` Bug prevention |
| Update dependency versions to match those in related packages to avoid conflicts.___ **Ensure that the dependency versions used in@seleniumhq/code-export-csharp-nunit are up-to-date with the versions specified in @seleniumhq/code-export-csharp-commons to avoid version conflicts and potential bugs.** [packages/code-export-csharp-nunit/package.json [22]](https://github.com/SeleniumHQ/selenium-ide/pull/1822/files#diff-7bc67c4298c3f0d942d69d3d6f6594a9d5f0983bf95814427b450e446b33c802R22-R22) ```diff -"side-code-export": "^4.0.5" +"side-code-export": "^4.0.5", +"@seleniumhq/code-export-csharp-commons": "^4.0.4" ``` Enhancement |
| Update to the latest dependency versions for compatibility and feature access.___ **Update the version of@seleniumhq/side-model and @seleniumhq/side-runtime in packages/side-runner/package.json to the latest versions to ensure compatibility with the latest features and bug fixes.** [packages/side-runner/package.json [26-27]](https://github.com/SeleniumHQ/selenium-ide/pull/1822/files#diff-96a04a4a55cf679557012a90b0f02f60559e36ae5c00f2490d23e54e2cee4cc4R26-R27) ```diff -"@seleniumhq/side-model": "^4.0.2", -"@seleniumhq/side-runtime": "^4.0.7", +"@seleniumhq/side-model": "^4.0.3", +"@seleniumhq/side-runtime": "^4.0.8", ``` |
User description
Thanks for contributing to the Selenium IDE! A PR well described will help maintainers to quickly review and merge it
Before submitting your PR, please check our contributing guidelines. Avoid large PRs, help reviewers by making them as simple and short as possible.
Description
Motivation and Context
Types of changes
Checklist
PR Type
enhancement, bug_fix
Description
SystemController
.Changes walkthrough 📝
1 files
index.ts
Enhance chromedriver startup and error handling
packages/selenium-ide/src/main/session/controllers/System/index.ts
on startup.
18 files
package.json
Update package version and dependencies
packages/code-export-csharp-commons/package.json
side-code-export
to version 4.0.5.package.json
Update package version and dependencies
packages/code-export-csharp-nunit/package.json
side-code-export
to version 4.0.5.package.json
Update package version and dependencies
packages/code-export-csharp-xunit/package.json
side-code-export
to version 4.0.5.package.json
Update package version and dependencies
packages/code-export-java-junit/package.json
side-code-export
to version 4.0.5.package.json
Update package version and dependencies
packages/code-export-javascript-mocha/package.json
side-code-export
to version 4.0.5.package.json
Update package version and dependencies
packages/code-export-python-pytest/package.json
side-code-export
to version 4.0.5.package.json
Update package version and dependencies
packages/code-export-ruby-rspec/package.json
side-code-export
to version 4.0.5.package.json
Update package version and dependencies
packages/get-driver/package.json
tar
to version 7.1.0.package.json
Update package version and dependencies
packages/selenium-ide/package.json
package.json
Update package version and dependencies
packages/side-api/package.json
@seleniumhq/side-model
to version4.0.2.
package.json
Update package version and dependencies
packages/side-code-export/package.json
@seleniumhq/side-model
to version4.0.2.
package.json
Update package version and dependencies
packages/side-example-suite/package.json
side-code-export
to version 4.0.5.package.json
Update package version
packages/side-model/package.json - Updated version to 4.0.2.
package.json
Update package version and dependencies
packages/side-runner/package.json
@seleniumhq/side-model
to version4.0.2.
package.json
Update package version and dependencies
packages/side-runtime/package.json
selenium-webdriver
to version 4.20.0.tsconfig.json
Simplify TypeScript configuration
packages/side-runtime/tsconfig.json - Removed references to `side-testkit` and `webdriver-testkit`.
package.json
Update package version and dependencies
packages/webdriver-testkit/package.json
selenium-webdriver
to version 4.20.0.pnpm-lock.yaml
Comprehensive dependency updates in lock file
pnpm-lock.yaml
packages.