autifyhq / autify-cli Goto Github PK
View Code? Open in Web Editor NEWAutify Command Line Interface (CLI)
Home Page: https://help.autify.com/docs/autify-command-line-interface
License: MIT License
Autify Command Line Interface (CLI)
Home Page: https://help.autify.com/docs/autify-command-line-interface
License: MIT License
To make sure our CI/CD integrations work with the new code before release, we'd like to run their integration test inside CLI workflow as well.
An idea is:
Hello! Great job for creating a client to interact with the autify platform, we are currently using it for our e2e tests in my actual company.
I have a question, sometimes the test cases are running for long time and we don't know the actual status of them. Is it possible to add some features like:
On Windows:
Run autify update
@autifyhq/autify-cli: Updating CLI... not updatable
With brew on GitHub Actions:
Run autify update
@autifyhq/autify-cli: Updating CLI... fetching manifest
@autifyhq/autify-cli: Updating CLI from 0.10.0-beta.0 to 0.10.0-beta.0-2f002ba (beta)... done
node:internal/process/promises:2[7](https://github.com/autifyhq/autify-cli/actions/runs/3031442476/jobs/4878335436#step:8:8)[9](https://github.com/autifyhq/autify-cli/actions/runs/3031442476/jobs/4878335436#step:8:10)
triggerUncaughtException(err, true /* fromPromise */);
^
[Error: ENOENT: no such file or directory, open '/Users/runner/.local/share/autify/channel'] {
errno: -2,
code: 'ENOENT',
syscall: 'open',
path: '/Users/runner/.local/share/autify/channel'
}
Note: autify update
works on my macOS laptop (autify
is installed via brew).
GitHub Actions example: https://github.com/autifyhq/autify-cli/actions/runs/3031442476
We should not implement such fake logic of autifyconnect
here. Instead, it should be provided along with autifyconnect
.
Reasons:
autifyconnect
's repository to reuse most of the real code.autifyconnect.exe
.Since Windows doesn't have a concept of "signal", it is very tricky to emulate the simlar behavior to Unix. Also, for some reasons, only Jest invocation can't handle signal properly. So, we gave up and used different behavior when Jest on Windows: https://github.com/autifyhq/autify-cli/blob/main/src/autify/connect/spawnClient.ts#L178
Once we settle a way to terminate autifyconnect
without signal, we should quickly switch to it and remove all the hacks for signal:
https://github.com/autifyhq/autify-cli/blob/main/patches/oclif%2B3.1.2.patch#L152-L153
This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.
These updates are currently rate-limited. Click on a checkbox below to force their creation now.
@oclif/core
, @oclif/plugin-not-found
, @types/tar
)@typescript-eslint/eslint-plugin
, @typescript-eslint/parser
)node-emoji
, @types/node-emoji
)These updates have all been created already. Click a checkbox below to force a retry/rebase of any.
These are blocked by an existing closed PR and will not be recreated unless you click a checkbox below.
inquirer
, @types/inquirer
).devcontainer/Dockerfile
mcr.microsoft.com/vscode/devcontainers/typescript-node 0-18-bullseye
.github/actions/setup/action.yml
actions/setup-node v4
aws-actions/configure-aws-credentials v4
aws-actions/configure-aws-credentials v4
aws-actions/configure-aws-credentials v4
.github/workflows/bump.yml
tibdex/github-app-token v2
actions/checkout v4
.github/workflows/github-actions-tests.yml
actions/checkout v4
actions/setup-node v4
autifyhq/actions-web-test-run v2
autifyhq/actions-web-test-run v2
autifyhq/actions-web-test-run v2
autifyhq/actions-web-test-run v2
autifyhq/actions-web-test-run v2
actions/setup-node v4
autifyhq/actions-mobile-test-run v2
autifyhq/actions-mobile-test-run v2
autifyhq/actions-mobile-test-run v2
autifyhq/actions-mobile-test-run v2
autifyhq/actions-mobile-test-run v2
autifyhq/actions-mobile-test-run v2
actions/setup-node v4
autifyhq/actions-mobile-build-upload v2
autifyhq/actions-mobile-build-upload v2
.github/workflows/integration-tests.yml
actions/checkout v4
actions/checkout v4
actions/checkout v4
actions/checkout v4
actions/checkout v4
actions/checkout v4
actions/checkout v4
.github/workflows/merge-bump.yml
tibdex/github-app-token v2
actions/checkout v4
.github/workflows/pr-bump.yml
tibdex/github-app-token v2
actions/checkout v4
.github/workflows/promote.yml
tibdex/github-app-token v2
actions/checkout v4
.github/workflows/publish.yml
tibdex/github-app-token v2
actions/checkout v4
actions/checkout v4
.github/workflows/pull-requests.yml
.github/workflows/rollback.yml
actions/checkout v4
.github/workflows/upload.yml
actions/checkout v4
actions/checkout v4
actions/checkout v4
actions/checkout v4
actions/checkout v4
.github/workflows/validate.yml
actions/checkout v4
integration-test/package.json
@pollyjs/adapter-node-http ^6.0.6
@pollyjs/core ^6.0.6
@pollyjs/persister ^6.0.6
@pollyjs/persister-fs ^6.0.6
cross-env ^7.0.3
express ^4.19.2
http-proxy-middleware ^2.0.6
jest ^29.7.0
strip-ansi ^6.0.1
tslib ^2.6.2
which ^4.0.0
@types/express ^4.17.21
@types/jest ^29.5.12
@types/node ^20.12.7
@types/which ^3.0.3
shx ^0.3.4
ts-node ^10.9.2
typescript ^5.4.5
node >=20.11.0
package.json
@autifyhq/autify-sdk ^0.21.0
@oclif/core ^3.26.3
@oclif/errors ^1.3.6
@oclif/plugin-help ^6.0.21
@oclif/plugin-not-found ^3.1.4
@oclif/plugin-update ^4.2.6
@oclif/plugin-warn-if-update-available ^2.1.1
abort-controller ^3.0.0
archiver ^6.0.2
envfile ^7.1.0
get-port ^5.1.1
inquirer ^8.2.6
listr ^0.14.3
node-emoji ^1.11.0
node-fetch ^2.7.0
node-stream-zip ^1.15.0
per-env ^1.0.2
shell-quote ^1.8.1
tar ^6.2.1
unzip-stream ^0.3.1
uuid ^9.0.1
which ^4.0.0
winston ^3.13.0
xstate ^4.38.3
@oclif/test ^3.2.10
@types/archiver ^6.0.2
@types/chai ^4.3.14
@types/inquirer ^8.2.10
@types/listr ^0.14.9
@types/node ^20.12.7
@types/node-emoji ^1.8.2
@types/node-fetch ^2.6.11
@types/shell-quote ^1.7.5
@types/tar ^6.1.12
@types/unzip-stream ^0.3.4
@types/uuid ^9.0.8
chai ^5.1.0
cross-env ^7.0.3
eslint ^8.57.0
eslint-config-oclif ^5.1.2
eslint-config-oclif-typescript ^3.1.5
eslint-config-prettier ^9.1.0
husky ^9.0.11
lint-staged ^15.2.2
oclif ^4.8.5
patch-package ^8.0.0
prettier ^3.2.5
shx ^0.3.4
ts-morph ^21.0.1
ts-node ^10.9.2
tslib ^2.6.2
typed-emitter ^2.1.0
typescript ^5.4.5
node >=20.11.0
eslint-plugin-unicorn ^50.0.1
@typescript-eslint/parser ^6.21.0
@typescript-eslint/eslint-plugin ^6.21.0
Currently, it relies on zip
binary installed on the host machine but it's not universal e.g. Jenkins CI servers don't have it: https://github.com/jenkinsci/autify-plugin/pull/16/checks?check_run_id=8119937975
Use JSZip to generate a zip file by pure JavaScript: https://stuk.github.io/jszip/documentation/examples.html
Note: This opens Windows support but be careful to use UNIX style path inside zip file because Autify for Mobile runs on macOS environment for iOS app.
https://github.com/autifyhq/autify-cli/actions/runs/3323103848/jobs/5493079029
We should skip homebrew publish if there is no change.
When running a test that takes a few minutes, hundreds of lines of logs are output.
We want to consider a way to reduce the amount of log output. For example, it might be a good idea to write a log entry when the status of a test execution changes.
In some cases, Autify users want to automatically retry specific tests a limited number of times (once or twice) until it passes. If Autify CLI can support this (with --retry
option along with --wait
option), that would be great.
To measure where the CLI is used, we should have configuration for user agent via environment variable like AUTIFY_CLI_USER_AGENT
. Then, each official integration overrides (or appends identifier) to the user agent and we can measure their usage.
Currently we provide only 32 bit binary for arm
architecture. This won't work with 64 bit architecture.
Example with public.ecr.aws/amazonlinux/amazonlinux:2
docker image:
bash-4.2# curl https://autify-cli-assets.s3.amazonaws.com/autify-cli/channels/stable/install-standalone.sh | sh
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 2046 100 2046 0 0 10459 0 --:--:-- --:--:-- --:--:-- 10492
Installing CLI from https://autify-cli-assets.s3.amazonaws.com/autify-cli/channels/stable/autify-linux-arm.tar.gz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 31.5M 100 31.5M 0 0 792k 0 0:00:40 0:00:40 --:--:-- 1257k
qemu-arm: Could not open '/lib/ld-linux-armhf.so.3': No such file or directory
autify installed to /usr/local/bin/autify
Error: node is not installed.
bash-4.2# autify --version
Error: node is not installed.
(In the installer, it removes node
when node -v
doesn't work and delegates system-wide node
but no node
is installed, hence the last error).
We should provide linux-arm64
binary because Node.JS officially provide such binary for node
as well.
High level commands such as web test run
use stdout for informing to the human user. Therefore, it is not easy to pass the re-usable data to other process via pipe.
We could use stderr for logging and stdout for machine-readable information but such convention will break easily. Also, machine-readable information is not needed for human.
Thus, we should put such data on data directory like ~/.data/autify/output/web-test-run-<timestamp>-<pid>.json
then print the location as a log. The other process like CI/CD integration can parse the file location from log easily and get the output in json format.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.