Commit Graph
154 Commits
Author SHA1 Message Date
Christopher Hiller 6b3cc1a874 Publish
- appium@2.0.0-beta.46
 - @appium/base-driver@8.7.3
 - @appium/base-plugin@1.10.5
 - @appium/doctor@1.16.28
 - @appium/docutils@0.0.13
 - @appium/fake-plugin@2.1.3
 - @appium/gulp-plugins@7.0.8
 - @appium/support@2.61.1
 - @appium/test-support@2.0.2
2022-10-14 14:02:09 -07:00
renovate[bot] 8c092b1172 chore(support): update dependency shell-quote to v1.7.4 2022-10-14 11:45:38 +00:00
Jonathan Lipps f545a6cde5 Publish
- appium@2.0.0-beta.45
 - @appium/base-driver@8.7.2
 - @appium/base-plugin@1.10.4
 - @appium/doctor@1.16.27
 - @appium/docutils@0.0.12
 - @appium/driver-test-support@0.2.1
 - @appium/execute-driver-plugin@2.0.6
 - @appium/fake-driver@4.2.2
 - @appium/fake-plugin@2.1.2
 - @appium/gulp-plugins@7.0.7
 - @appium/images-plugin@1.3.7
 - @appium/opencv@1.0.13
 - @appium/plugin-test-support@0.2.1
 - @appium/relaxed-caps-plugin@1.0.0-beta.13
 - @appium/support@2.61.0
 - @appium/test-support@2.0.1
 - @appium/types@0.5.0
 - @appium/universal-xml-plugin@1.0.0-beta.15
2022-10-13 16:25:16 -07:00
renovate[bot] 24a0efd695 chore(types): update dependency type-fest to v3.1.0 2022-10-10 10:13:17 +00:00
Christopher Hiller b186928e60 feat(appium,support): enable detection of local extensions for improved DX
This change makes Appium recognize the existence of an extension in the current (or parent) dir, and automatically adds it to the extension manifest.

Resolution of Appium (e.g., _how_ Appium was installed) is no longer taken into account when determining if we're "in" a package that depends upon Appium.  So you can easily `npm link appium` in an extension working copy if you wish, and this will not impact Appium's behavior.

To support this change, `hasAppiumDependency()` in `@appium/support`'s `env` has changed to be a wrapper around the new `findAppiumDependency()`.  The strategy here is to use `npm list --long` to get detailed information about the current directory.  The result will have an object with a `path` property, and that property points to the current workspace root (or current project root).  We can then read the `package.json` in the `path` property--or just the CWD--to make the determination about an `appium` dependency (or lack thereof).  For extension working copies, this will return `true` because `appium` will be present in `devDependencies`, `peerDependencies`, or both.  For any other project, it will usually just be in `devDependencies`.  If there's no `package.json` in the CWD and we're not in a workspace, Appium continues to use the default `APPIUM_HOME`.

One side effect of this is that running `appium` from the monorepo itself treats the dir hierarchy as a package which has an `appium` dependency (because it does!).  To that end, the default `APPIUM_HOME` will _not_ be used when running `appium` from _anywhere in the monorepo_ unless you explicitly set `APPIUM_HOME` in an environment variable.  Generally, our tests prescribe their own temporary `APPIUM_HOME` directories, so this should have no effect on them (in the general case).  It _will_ have an effect on running `appium` manually in a development environment, as the workspace root will be treated as `APPIUM_HOME`; running `node ./packages/appium/index.js driver install uiautomator2` (or `npm start -- driver install uiautomator2`) will install that driver as a dev dependency (and save it).  I could add a special case _just for the monorepo_ if we don't want this to happen, but it may introduce complexity we/I don't want to maintain, so I left it out.  Furthermore, `npm start -- driver list` will show the `fake` driver, and `npm start -- plugin list` will show all of the plugins in `packages/`.

Regardless, I view this as a solid win for extension developers.

Bonus:

While I don't have benchmarks, this should considerably improve performance when detecting locally-installed (`node_modules/some-extension`) or extension working copies.  Instead of using `klaw` to walk the filesystem (in serial!) we can just use `glob` to look for relevant `package.json` files.  Instead of waiting until `glob` is completely finished searching, we can listen for its `match` evens and begin processing `package.json` files as soon as they are found. Because `@appium/support` only exposes a promisifed `glob()`--with no access to the `EventEmitter` it returns--`appium` depends on `glob` directly.
2022-10-06 15:15:18 -07:00
Christopher Hiller cc04e6595b chore(): remove babel-runtime
Closes #17536
2022-10-06 11:51:49 -07:00
renovate[bot] 45e653151d chore(types): update dependency type-fest to v3 2022-10-05 13:24:04 -07:00
renovate[bot] 4829984e2e chore(support): update dependency semver to v7.3.8 2022-10-05 13:43:21 +00:00
renovate[bot] 9ea95a27a3 chore(support): update dependency teen_process to v2 2022-09-26 15:26:35 -07:00
renovate[bot] 86ac5f7a2b chore(support): update dependency @types/glob to v8 2022-09-26 10:52:41 -07:00
Christopher Hiller 08f0bc8839 feat(support): add fs.isExecutable()
This is handy for drivers which need to find executables in the filesystem.

Also fixes possible false-positives in `fs.exists()`/`fs.hasAccess()` on Windows.
2022-09-26 10:50:32 -07:00
renovate[bot] 096f0ab2fe chore(support): update dependency jimp to v0.16.2 2022-09-16 12:10:33 +00:00
Christopher Hiller c26af8f852 Publish
- appium@2.0.0-beta.44
 - @appium/base-driver@8.7.1
 - @appium/base-plugin@1.10.3
 - @appium/doctor@1.16.26
 - @appium/docutils@0.0.11
 - @appium/driver-test-support@0.2.0
 - @appium/eslint-config-appium@7.0.0
 - @appium/execute-driver-plugin@2.0.5
 - @appium/fake-driver@4.2.1
 - @appium/fake-plugin@2.1.1
 - @appium/gulp-plugins@7.0.6
 - @appium/images-plugin@1.3.6
 - @appium/opencv@1.0.12
 - @appium/plugin-test-support@0.2.0
 - @appium/relaxed-caps-plugin@1.0.0-beta.12
 - @appium/support@2.60.0
 - @appium/test-support@2.0.0
 - @appium/types@0.4.1
 - @appium/universal-xml-plugin@1.0.0-beta.14
2022-09-07 12:40:03 -07:00
renovate[bot] bfef2db517 chore(gulp-plugins): update babel monorepo to v7.19.0 2022-09-06 19:52:27 +00:00
Mykola Mokhnach 5ab78297e1 feat(support): Move module root detection utility into support package (#17427) 2022-08-30 07:54:36 +02:00
Christopher Hiller 89cf01fda3 fix(support): update checks eat errors from non-existent packages 2022-08-24 15:00:34 -07:00
renovate[bot] f0608a5d01 chore(types): update dependency type-fest to v2.19.0 2022-08-24 17:32:45 +00:00
Mykola Mokhnach 39d5cee1b7 feat(appium): Adjust NODE_PATH so NPM could properly resolve component peer dependencies (#17325) 2022-08-20 13:35:04 +02:00
renovate[bot] 3470ec5101 chore(types): update dependency type-fest to v2.18.1 2022-08-19 10:16:14 +00:00
renovate[bot] 8eea316484 chore(support): update dependency @types/semver to v7.3.12 2022-08-12 14:07:44 +00:00
renovate[bot] 7dbf3c2127 chore(support): update dependency @types/semver to v7.3.11 2022-08-11 12:05:02 +00:00
Jonathan Lipps c58f32441d Publish
- appium@2.0.0-beta.43
 - @appium/base-driver@8.7.0
 - @appium/base-plugin@1.10.2
 - @appium/doctor@1.16.25
 - @appium/docutils@0.0.10
 - @appium/fake-driver@4.2.0
 - @appium/fake-plugin@2.1.0
 - @appium/gulp-plugins@7.0.5
 - @appium/images-plugin@1.3.5
 - @appium/support@2.59.5
 - @appium/test-support@1.5.0
 - @appium/types@0.4.0
2022-08-10 07:45:24 -07:00
Christopher Hiller 888aac85ff fix(support): add missing @appium/types
This package was missing `@appium/types`, which means packages consuming `@appium/support` which _don't_ also consume `appium` in some capacity will have types that won't compile, e.g., `teen_process`.
2022-08-09 15:26:20 -07:00
Christopher Hiller 8d6ffe0932 fix(support): path to APPIUM_HOME must always be absolute
Closes #17338
2022-08-09 10:49:32 -07:00
Jonathan Lipps 500c08f392 Publish
- appium@2.0.0-beta.42
 - @appium/base-driver@8.6.1
 - @appium/base-plugin@1.10.1
 - @appium/doctor@1.16.24
 - @appium/docutils@0.0.9
 - @appium/eslint-config-appium@6.0.4
 - @appium/execute-driver-plugin@2.0.4
 - @appium/fake-driver@4.1.0
 - @appium/fake-plugin@2.0.5
 - @appium/gulp-plugins@7.0.4
 - @appium/images-plugin@1.3.4
 - @appium/opencv@1.0.11
 - @appium/relaxed-caps-plugin@1.0.0-beta.11
 - @appium/schema@0.0.9
 - @appium/support@2.59.4
 - @appium/test-support@1.4.1
 - @appium/types@0.3.1
 - @appium/universal-xml-plugin@1.0.0-beta.13
2022-08-02 20:21:17 -07:00
Christopher Hiller d8d2382327 fix(appium,base-driver,base-plugin,doctor,docutils,eslint-config-appium,execute-driver-plugin,fake-driver,fake-plugin,gulp-plugins,images-plugin,opencv,relaxed-caps-plugin,schema,support,test-support,types,universal-xml-plugin): update engines
also add a missing dep in `@appium/schema`
2022-08-02 14:22:44 -07:00
renovate[bot] 47de13c0d6 chore(types): update dependency type-fest to v2.18.0 2022-07-31 13:25:12 +00:00
Christopher Hiller f6e6d7234e Publish
- appium@2.0.0-beta.41
 - @appium/base-driver@8.6.0
 - @appium/base-plugin@1.10.0
 - @appium/doctor@1.16.23
 - @appium/docutils@0.0.8
 - @appium/eslint-config-appium@6.0.3
 - @appium/execute-driver-plugin@2.0.3
 - @appium/fake-driver@4.0.2
 - @appium/fake-plugin@2.0.4
 - @appium/gulp-plugins@7.0.3
 - @appium/images-plugin@1.3.3
 - @appium/opencv@1.0.10
 - @appium/relaxed-caps-plugin@1.0.0-beta.10
 - @appium/schema@0.0.8
 - @appium/support@2.59.3
 - @appium/test-support@1.4.0
 - @appium/types@0.3.0
 - @appium/universal-xml-plugin@1.0.0-beta.12
2022-07-28 14:34:54 -07:00
renovate[bot] 54908e1cae chore(types): update dependency type-fest to v2.17.0 2022-07-22 16:54:35 +00:00
renovate[bot] 27ea226364 chore(): update babel monorepo to v7.18.9 2022-07-19 12:46:13 +00:00
Christopher Hiller 85c6526909 fix(support): if appium is installed extraneously, do not consider it a dependency
This can happen if someone does something like `npm install --no-save appium`, _or_ if npm changes its shrinkwrap behavior for reasons that cause `appium` to be installed in `$APPIUM_HOME/node_modules` _(cough)_
2022-07-13 13:48:21 -07:00
Christopher Hiller 2a6a056187 fix(appium,support): fix installation problems
Ref: #17073

this change uses --legacy-peer-deps for newer versions of npm to
avoid installation of appium when installing extensions in ~/.appium.  this does not work if the extension contains a shrinkwrap with appium in it, though.
in that case, an extra copy of appium will always be installed.

it creates a symlink, e.g., ~/.appium/node_modules/appium to the currently-running appium, wherever that is.  could not abuse NODE_PATH to do this.

this is rather naive and does not check that the symlink is actually the same as the running appium if it already exists. that might cause some weird problems with multiple installs of appium on the same machine, but if it does, we can fix them as they arise.
2022-07-13 13:48:21 -07:00
renovate[bot] a5700904bc chore(support): update dependency plist to v3.0.6 2022-07-13 14:02:42 +00:00
Christopher Hiller f9129dfee3 fix(): moved type packages to deps of specific packages
When any package here is consumed as a library, the production deps installed alongside it _must_ also include depenencies related to type information. If these packages _aren't_ included, consumers will not have the requisite declarations installed and will get incomplete type information--at best--or worse; compilation errors.

Putting the onus on the consumer to install these requisite types is both user-hostile _and_ can result in the incorrect versions of type declarations being installed.

To that end, I've moved the various type declaration deps to production deps of the packages in which they are used.  Sometimes this is multiple packages (in the case of, say, `@types/teen_process`).  This results in many types being removed from the monorepo root.  Those that remain are for _dev dependencies only_.  If a packages uses, say, `ws`, but only in its tests, then the types can remain in the monorepo root along with the rest of the common dev deps.

I also saw an unused `supports-color` in `appium` and removed it.
2022-07-08 13:09:28 -07:00
Mykola Mokhnach dbc4544b72 fix: Logs format (#17156) 2022-07-08 18:56:17 +02:00
renovate[bot] ca7f2291c8 chore(support): update dependency moment to v2.29.4 2022-07-07 10:43:21 +00:00
renovate[bot] c4a1a46df3 chore(): update babel monorepo to v7.18.6 2022-06-28 12:58:59 +00:00
Christopher Hiller 485239d599 chore(ci): run smoke test in all packages
This uses the [boneskull/nodejs-production-test-action](https://github.com/boneskull/nodejs-production-test-action) GH action to run a smoke test across all packages.

The action does the following:

1. Runs `npm pack` on each package, writing the tarball to a temp dir. This tarball contains the package as a user would `npm install` it.
2. Changes into the temp dir and runs `npm install <tarball>` on each
3. Runs a specified script (in our case, `test:smoke`) in each installed package's dir in `<tmp_dir>/node_modules`

Because `devDependencies` will not be present, this should avoid a class of issues where production deps are miscategorized as dev deps.

The action should probably use a separate temp dir for each--in the case of a dependency being present but only because some other package depends on it--but it's not smart enough to figure out peer dependencies yet.
2022-06-13 16:08:17 -07:00
Jonathan Lipps 4cf2cc92d0 Publish
- appium@2.0.0-beta.40
 - @appium/base-driver@8.5.7
 - @appium/base-plugin@1.9.2
 - @appium/doctor@1.16.22
 - @appium/docutils@0.0.7
 - @appium/fake-plugin@2.0.3
 - @appium/support@2.59.2
 - @appium/test-support@1.3.22
2022-06-03 19:08:16 -07:00
Jonathan Lipps f3d31202e0 fix(support): other color deps are also prod deps 2022-06-03 19:02:54 -07:00
Jonathan Lipps 5dd2e35ac9 fix(support): log-symbols is a prod dep 2022-06-03 19:02:54 -07:00
Jonathan Lipps 62b97417fc Publish
- appium@2.0.0-beta.37
 - @appium/base-driver@8.5.5
 - @appium/base-plugin@1.9.1
 - @appium/doctor@1.16.21
 - @appium/docutils@0.0.6
 - @appium/eslint-config-appium@6.0.2
 - @appium/execute-driver-plugin@2.0.1
 - @appium/fake-driver@4.0.1
 - @appium/fake-plugin@2.0.1
 - @appium/gulp-plugins@7.0.2
 - @appium/images-plugin@1.3.1
 - @appium/opencv@1.0.9
 - @appium/relaxed-caps-plugin@1.0.0-beta.8
 - @appium/schema@0.0.7
 - @appium/support@2.59.1
 - @appium/test-support@1.3.21
 - @appium/types@0.2.5
 - @appium/universal-xml-plugin@1.0.0-beta.10
2022-05-31 16:52:23 -07:00
Jonathan Lipps f6cbfd77eb chore: publish, also set an explicit version for images since it was way off 2022-05-31 16:51:36 -07:00
Jonathan Lipps 5c7af8ee73 Publish
- appium@2.0.0-beta.36
 - @appium/base-driver@8.5.4
 - @appium/base-plugin@1.9.0
 - @appium/doctor@1.16.20
 - @appium/docutils@0.0.5
 - @appium/eslint-config-appium@6.0.1
 - @appium/execute-driver-plugin@2.0.0
 - @appium/fake-driver@4.0.0
 - @appium/fake-plugin@2.0.0
 - @appium/gulp-plugins@7.0.1
 - @appium/images-plugin@1.2.0
 - @appium/opencv@1.0.8
 - @appium/relaxed-caps-plugin@1.0.0-beta.7
 - @appium/schema@0.0.6
 - @appium/support@2.59.0
 - @appium/test-support@1.3.20
 - @appium/types@0.2.4
 - @appium/universal-xml-plugin@1.0.0-beta.9
2022-05-31 16:44:51 -07:00
Christopher Hiller ac8e0e0451 chore(appium,base-driver,base-plugin,doctor,docutils,eslint-config-appium,execute-driver-plugin,fake-driver,fake-plugin,gulp-plugins,images-plugin,opencv,relaxed-caps-plugin,schema,support,test-support,types,universal-xml-plugin): fix engines field 😂 2022-05-31 16:26:43 -07:00
Renovate Bot e5e8f9b874 chore(test-support): update dependency @babel/runtime to v7.18.3 2022-05-26 15:29:43 -07:00
Christopher Hiller 6b224f545f feat(appium,support): extension check improvements
This PR changes a few things:

- Extension problems are now displayed correctly at `appium server` startup.  This was done by changing the default `npmlog` level, then reesetting it to `silent` when `winston` takes over (in `logsink.init()`)
- Extension problems are also displayed at install time.
- Improved performance of `appium <driver|plugin> install` in many cases by actually checking if the thing is installed _before_ installing it.
- `ExtensionCommand` uses a new console logging mechanism (`console` in `@appium/support`) tailored to CLI usage, since it is intended to be run via the CLI.  Using this, we handle the result of extension checks both at server runtime and during CLI tool usage in the appropriate manner.  The implementation is just a dumb wrapper around `console.log` and should eventually be removed when we revisit the logging architecture.
- Separated extension checks further into "errors" ("Problems") and "warnings".  As these demand distinct log levels, `ExtensionConfig` no longer accepts a `logFn` in its constructor (since this restricted to a single level ("error"))
- Generally improved specificity, helpfulness, and reduced extraneous verbosity (like this sentence) of warnings
- Removed `strip-colors`, as this functionality is present in `@colors/colors`.  The E2E test helper now automatically strips colors from child processes.
- More tests
- Change `e2e-helpers` to use `CliConsole` for command logging output during tests
- Change the "uninstall" command to use `npm uninstall`, since `rm -rf` will hose `node_modules` if the current project has a dependency on `appium` (in other words, if they are otherwise using a package manager to manage extensions).  This is slower but safer.
2022-05-26 12:07:17 -07:00
Renovate Bot 4d6c114fe8 chore(gulp-plugins): update babel monorepo to v7.18.2 2022-05-25 14:28:48 +00:00
Renovate Bot 92b17d6c2e chore(gulp-plugins): update babel monorepo to v7.18.0 2022-05-20 14:59:10 -07:00
Renovate Bot 5a149d35fc chore(support): update dependency glob to v8.0.3 2022-05-16 11:53:12 -07:00