Commit Graph
81 Commits
Author SHA1 Message Date
Christopher Hiller 868517b6f4 chore: remove gulp from appium package (#16459)
This change removes `gulp` and replaces it with plain ol' `babel` and `mocha`.

## `appium`

- No gulp.
- `test/` has been re-organized.  All test files now end in the extension `.spec.js`, which is a recognized convention and understood by editors/IDEs.  The tests are further split into `unit` and `e2e` subdirs.  This makes working with both `babel` and `mocha` easier.
- The tests are _not_ run against the transpiled code; code is now transpiled on-the-fly via `@babel/register`. This only affects `appium`.
- `commands-yml/validator.js` moved to `scripts/parse-yml-commands.js`. It has been rewritten as a CJS module.  `commands-yml/` should not contain `.js` files.
- `test/setup.js` is a new test harness specific to Appium, which loads & configures `@babel/register`.  Eventually, the contents of this file can be moved into the root monorepo's `test/setup.js`, but the rest of the packages do not need `@babel/register`, so we avoid the overhead.

## `@appium/gulp-plugins`

- Unfortunately, due to the new `npm test` strategy (see below), we cannot use the `nyan` reporter.  Or rather, we _can_, but will not see the animation.  So the reporter is now set to default to `spec`.
- Modified tests so they didn't overwrite the actual `build` dir with transpiled fixtures, which is what was happening. This was causing failures depending on the transpile/test order.

## All Packages

- All packages now have their own `build`, `test`, `test:e2e` and `dev` (just build + watch mode) npm scripts. This makes running a complete build easier, since each package can now provide its own appropriate command.  This is _mostly_ just `gulp once` (where `gulp` was used before), except for `appium`, where `@babel/cli` is used directly.
- This is what happens when `npm test` is run from the monorepo (in order):
    1. All packages are built (in parallel) by running `npm run build` in each folder (via `lerna`). See `pretest`
    2. All code is linted directly via `eslint`.
    3. All _unit tests_ are run w/ `npm test` in each folder, having assumed transpilation already occurred (if necessary).
- `npm run e2e-test` runs the `npm run test:e2e` in each folder. No transpilation occurs! Careful.
- All scripts are expected to live in `packages/*/scripts`, and this directory enforces CJS via ESLint.  `postinstall.js` moved, as well as `check-npm-pack-files.js`. `generate-schema-declarations.mjs` moved from the root `scripts/` dir into `packages/appium/scripts/`; it's now CJS instead of ESM.
- I had profiled running various things with `lerna run --parallel`, but it turns out this is not faster.  I'm not sure why, but I think it may have something to do with streaming STDOUT/STDERR, or potentially the overhead of running child processes outweighs the time it takes to actually run tests and builds.
- The behavior of `lerna run` now mimicks `lerna exec`, which was "run stuff in serial, streaming the output". The default behavior of `lerna run` is "run stuff in parallel, buffering the output".  Buffered output sucks, and streaming the output from all tasks at once creates chaos.  To override this behavior, you'll see `--parallel --concurrency=8 --prefix` for tasks that can truly be parallelized, like transpilation.  The number 8 is the "maximum", and CI usually won't have more than 2 cores available anyway.
- When run in CI, Mocha runs with `--forbid-only`, which will fail if there's an `.only()` somewhere in the tests. Further, it forces color output.

## Etc.

- Updated Wallaby config, `.gitignore`, `.eslintignore`.
- Sorted `package.json` files
- Removed `watch` and `coverage` scripts which were broken anyway.

chore(appium): fix schema json path issues

- the path to the JSON schema is now correct: `lib/appium-config-schema.json`
- add `log-symbols` to devdeps for niceness. this is already a transitive dep
2022-03-09 14:50:45 -08:00
Christopher Hiller 76d147aba1 chore: configure FOSSA
FOSSA was giving us a bunch of warnings about copyleft licenses, but these licenses are only present in our examples.  This configuration file will tell FOSSA to ignore that stuff.

FOSSA recognizes `examples/` as something it should skip, but not `sample-code`.  It's easier to rename the dir than it is to negotiate a PR with FOSSA.  Why they don't allow the config file to just ignore directories is beyond me...
2021-08-18 12:25:13 -07:00
Christopher Hiller 6c769a2b7c chore: housecleaning
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
2021-08-10 11:52:57 -07:00
Christopher Hiller c3bbab1239 chore: add vscode settings to .gitignore 2021-05-18 12:36:08 -07:00
Jonathan Lipps ec763d5718 fix lint warnings and use reduce 2020-06-10 07:16:38 -07:00
Jonathan Lipps bb0313ce1a breaking change: do not depend directly on drivers anymore
instead look for a reference to them in a drivers json file which will be
managed by the appium driver cli tool. this is a WIP and tests are not yet fixed

(breaking change)

feat: add driver CLI and subcommands; start to implement them beginning with list

feat: enable showing possible updates during 'driver list'

feat: enable installation of drivers via 'driver install'

feat: enable installation of drivers via local, git, and github specs

fix: lint and unit test updates to get everything passing

fix: make sure travis installs fakedriver

refactor: move cli helpers into own file and clean up driver json validation
2020-06-10 07:16:38 -07:00
Isaac A. Murchie 1422473a5c feat: Remove Selendroid driver (#12964) 2019-07-25 10:26:24 -04:00
Isaac A. Murchie eb4ddafc36 Update python sample code (#12681) 2019-05-23 09:37:40 -04:00
Kazuaki Matsuo 783c5e3c2e ignore .lock file in ruby sample code (#12034) 2019-01-19 15:19:51 +09:00
Kazuaki Matsuo c503f08574 Add csharp sample (#11255)
* add git ignore

* add csharp sample tests

* update readme

* remove comments
2018-08-28 09:21:14 -04:00
Kazuaki Matsuo cd12ed9a51 Add python sample code (#11208)
* add initial python sample

* add all of ios and android tests

* apply formatter

* add >=0.28 to avoid version error

* tweak versions of default OS

* convert some tests to unittest based ones

* use single quote mainly

* use {} format style for string

* use format syntax

* apply format and tweak assertions

* use is None

* use assert raise

* speficy a number of elements

* tweak exception

* move app path to helper

* tweak assertion conditions

* remove .close since with open() close file automatically
2018-08-22 11:48:58 -07:00
dan@saucelabs.com bb4517024e Add a zip command 2018-06-21 20:55:31 -07:00
Isaac A. Murchie 04f6543561 Bring Sample Code into master (#10880)
* Sample code stub (#9887)

* WD tests

* WD sample code (#9918)

* WebdriverIO sample code (#10166)

* Ruby sample code (#10331)

* PHP Sample Code (#10209)

* Basic Android java test

* Java sample code (#10427)

* Sample code (#10834)

* Sample code stub (#9887)

* WD tests

* WD sample code (#9918)

* WebdriverIO sample code (#10166)

* Ruby sample code (#10331)

* PHP Sample Code (#10209)

* Basic Android java test

* Java sample code (#10427)

* fixed WDIO test

* Update .npmignore
2018-06-15 08:23:42 -04:00
Dan Graham 36cc935fc5 Revert "Create session and basic interactions samples (#9907)" (#9915)
This reverts commit 061e264800.
2018-01-04 13:52:30 -08:00
Dan Graham 061e264800 Create session and basic interactions samples (#9907)
* Add apps; add create session test
* Android create session tests
* iOS basic interactions test
* Basic web session tests (iOS and Android)
2018-01-04 13:48:24 -08:00
Isaac A. Murchie 524cee0796 Add e2e-tests to travis config (#9841) 2017-12-27 07:34:08 -05:00
Dan Graham 2610c14aac Move sitemap from appium.io to docs (#9220)
* So that we don't have to maintain the sitemap in a separate repo from the main doc repo
* Also, ignore mkdocs.yml, it's an artifcat of the site building process
2017-09-15 13:04:04 -07:00
Isaac A. Murchie 94635edeac Update linting (#9123)
* Update linting

* Move minimum node version to 5

* Remove coverage for now

* Fix docs for node version

* Fail for node 4 and below
2017-08-31 07:49:43 -04:00
Isaac Murchie c1fb7a8d9a Fix python swipe docs 2016-03-02 16:04:19 -08:00
Jonathan Lipps 3da51d05cf move all old code out of git 2015-05-21 20:50:36 -07:00
Jonathan Lipps 963eac555b get rid of old xpath/uiauto dirs now that we have appium-uiauto 2015-05-12 12:11:02 -07:00
sebv fb3e4daab6 ci fix 2015-02-28 20:39:46 +08:00
sebv 230fde79c4 typo 2015-02-27 21:26:12 +08:00
sebv 375098ec95 ci changes, moving code to appium-ci-gulper and using gulp more 2015-02-27 20:31:13 +08:00
sebv b0c8b983dc adds prepare-tap tool 2015-02-09 02:11:23 +08:00
Isaac Murchie 3cb2c426a2 Figure out location of adb earlier 2015-01-14 10:40:40 -08:00
Jonah Stiennon 1d6d6237ca all sample-code in gitignore 2014-08-13 16:26:35 -07:00
Jonathan Lipps 0483952a0e move sample code and apps out of main repo
and add a grunt task that brings them in for use in dev
2014-08-12 17:58:42 -07:00
Isaac Murchie 5b9145af02 Update Python samples 2014-06-09 19:34:59 -07:00
bootstraponline 04ca54f094 Update Ruby sample code 2014-05-17 17:04:44 -04:00
Dan Doveralba b07e1b633c Add Location & Contacts Alerts
* reqest access to location and contacts in our sample app
2014-03-14 18:26:31 -07:00
Isaac Murchie c7910936fd Ignore maven/surefire byproducts 2014-03-06 09:48:45 -08:00
bootstraponline cce7ee0126 Android longClick x, y, and duration support
Ruby examples:

mobile :longClick, element: el.ref

mobile :longClick, element: el.ref, duration: 3000

mobile :longClick, x: 400, y: 297, duration: 3000

mobile :longClick, x: 0.5, y: 0.244
2014-02-27 16:18:05 -05:00
jonahss cd411874a4 changed .appiumconfig to .apapiumconfig.json so we can load it with require() and have it cached 2014-02-25 15:53:55 -08:00
Jonathan Lipps 0de0452b75 ensure selendroid test app doesn't need to have its version updated when we update selendroid 2014-02-13 15:25:56 -08:00
Jonathan Lipps 0dd0b95d1c keep track of 'dumpsys window' logs for research (fix #1401) 2013-11-21 13:44:46 -08:00
Jonathan Lipps c3e7c1d03b update webviewapp for ios7, all orientations, and loading notification 2013-11-15 10:56:16 -08:00
Jonathan Lipps 5ad5df488b move all android-related files together into devices/android 2013-10-17 12:33:49 -07:00
Jonathan Lipps 64f5619331 move uiauto stuff into ios/ and extract status and xpath libs 2013-10-17 12:33:48 -07:00
Jonathan Lipps f6a4940fc0 update gitignore and npmignore with new directory structure 2013-10-17 10:30:10 -07:00
Jonathan Lipps 27aa99bceb allow test.sh to collate all tests
so we get one test count and time measurement
2013-09-16 19:03:23 +02:00
Jonathan Lipps ca061241d5 make sure gappium apps are in gitignore 2013-09-05 17:50:30 -07:00
Jonathan Lipps 5318d58990 add set geolocation support for android (fix #564) 2013-06-03 16:53:29 -07:00
Dan Cuellar b58e01766c Adding .idea to .gitignore 2013-05-15 08:28:34 -07:00
Jonathan Lipps 8244d13b5f have appium use all external binaries/libraries in build/ rather than submodules/
this is so we can easily wrap up build/ say for an npm publish without getting all the submodule code as well
2013-05-07 16:37:29 -07:00
Jonathan Lipps e5d43beb9f refactor server.js and add config functions so we fail if not configured 2013-05-03 16:38:04 -07:00
Jonathan Lipps 5f070ffdc2 rename uiautomator/ dir to more descriptive android/ 2013-05-03 11:38:26 -07:00
Jonathan Lipps 776726366f make sure webviewdemo isn't added to repo 2013-04-30 08:52:37 -07:00
Jonathan Lipps e1d7102499 update gitignore to track selendroid test 2013-04-12 10:15:36 -07:00
Jonathan Lipps 7631fb7f75 reset.sh for selendroid 2013-04-11 13:35:22 -07:00