- add `jsconfig.json` for the TS language server to understand the project
- update `.wallaby.js` to transpile fixtures if necessary; run on save to reduce lag
- update single-file Mocha debug launch config
- add `test` env in `babel.config.json` which is used by the former
- add some handy vscode tasks
- add a bunch of types
- remove unused `babel-eslint` (we use `@babel/eslint-parser`)
- bump `ecmaVersion` in `eslint-config-appium`
- remove cruft from babel configs (`shippedProposals: true` goes a long way)
- enable `sinon-chai` globally in tests
- add `rewiremock` for module-level mocking (sinon cannot do this itself, but they work in tandem)
Just a bunch of random (mostly path-related) fixes.
## Monorepo
- Make `npm run clean` work cross-platform
- Sort root `package.json`
- Update Babel configs to suppress warning about `@babel/plugin-proposal-private-property-in-object`
- Add `.nyc_output` and `*.lerna_backup` to `.gitignore`
- Replace references to `appium-support`
- Sync `package.json` fields
- Add a [Wallaby](https://wallabyjs.com) configuration file
## appium
- `lib/config`: `package.json` resolution
- split some tests out of `config-specs.js` and into `config-e2e-specs.js` since they are very clearly not unit tests
- Improve `PROJECT_ROOT` resolution, which is still a hack
- Copy fixtures & fix paths to fixtures in tests
## @appium/base-driver
- `lib/basedriver/driver`: `package.json` resolution
- Fix broken tests when run in isolation (`chai.should()`)
## @appium/doctor
- `lib/doctor`: `package.json` resolution
- `lib/utils`: `package.json` resolution & exposed `resetLog()` which undoes what `configureBinaryLog()` does (for testing purposes)
- `utils-specs.js`: clean up after `onLogMessage` test
- copy fixtures into `build` upon transpile
- Upgrade `@appium/gulp-plugins`
## @appium/gulp-plugins
- Ensure `postTranspile` is run when `transpile` is run before tests
- Fix `.babelrc` like `babel.config.json`
## @appium/support
- Fixture resolution
- Fix broken tests when run in isolation (`chai-as-promised`)
- Copy fixtures when transpiling
* chore: update @appium/fake-driver to use @appium/base-driver
BREAKING CHANGE: `fake-driver` now depends upon `@appium/base-driver@8.x`
## `@appium/fake-driver`
- need to use w3c capabilities only
- fix: find `app.xml` fixture properly when running tests via `mocha --require=@babel/register`
## `@appium/base-driver`
- fixed a dead URL in a comment
- updated the "logging" tests to manually supply w3c capabilities. `createSession()` does it for you, but `executeCommand('createSession')` does not.
- display the name of the driver under test when executing base driver's test suite with other drivers
Ref: #15425
* fix(fake-driver): add naive css selector support
* fix(fake-driver): helpers now use wdio instead of wd
- exported more constants as base-driver helpers do
- `deleteSession()` now expects a wdio `browser` (`driver`) object; removed closure
* fix(fake-driver): find-element-tests and driver-e2e-specs members passing
- alert-tests, context-tests, element-interaction-tests, general-tests all failing still
* fix(fake-driver): update interaction tests
replace unsupported `getLocation` with `getElementRect`
* fix(fake-driver): update alert tests
* fix(fake-driver): udpate context tests
* fix(fake-driver): update unit tests
* fix(base-driver): implement missing route for releaseActions
is the call to `this.proxyReleaseActions` even necessary?
* fix(fake-driver): update generic actions tests
also add a stub implementation of `releaseActions`, which wdio calls
* chore(fake-driver): remove redundant tests from find-element-tests
covered by other strategies
* fix(fake-driver): update generic actions tests
also fix path to screenshot (`screen.png`) when running tests outside of `build`
* chore(fake-driver): use fs module from @appium/support
* chore(base-driver): update hash in protocol consistency test
* fix(base-driver): update e2e test fn to prefer provided address/port over default
* chore: formatting
1. Uses `sync-monorepo-packages` to keep `README.md` and `packages/appium/README.md` in sync. Since `README` gets published to npm but _also_ shows in the GitHub repo, both places need a `README`. In lieu of a custom `README`, we can just sync it for now. This is called via a `preversion` script.
1. Various fields are synced in `package.json`. This does not include dependencies—but those _in common_ should probably be kept in sync as well.
1. Lerna uses conventional commits and Git tags to figure out what to do. It should automatically determine what needs releasing and what version it should be released as.
1. Tags have been pushed to the repo for Lerna to use. In the case where the changesets are functionally identical to the latest code in the old repositories, the version number has been retained, and the tag is of the format `[@scope/]<package-name>@<version>`. In the case where the old repos had _unreleased_ changesets, I’ve tagged with a new patch release and adopted the `-rc.0` suffix. So if we were at v5.5.0 in `appium-gulp-plugins`, `@appium/gulp-plugins` is tagged as `@appium/gulp-plugins@5.5.1-rc.0`. I have not modified the version in `package.json`.
1. As with adopting any new release/publishing strategy, we should be meticulous about what we’re doing until we’re comfortable with how it works. Lerna supports dry runs; we should use them.
1. Documentation on usage will arrive in next changes to this PR.