Code Monkey home page Code Monkey logo

a11ywatch's Introduction

A11yWatch Lite

The fast, precise, and sophisticated web accessibility automation tool for staying inclusive

crates.io MIT

en ja es

A11yWatch Lite is a previous and open-source version of A11yWatch (a paid, hosted Web accessibility and Vitals Tool). It was the first version of our software, and has been downloaded a lot!

While we are no longer adding features to this Lite version, we will be continuing to maintain it long-term and fix any bugs that come up.

A11yWatch Lite vs A11yWatch

A11yWatch is much more detailed, feature-rich, efficient, and faster, than A11yWatch Lite. Sign up for A11yWatch today and level up your accessibility automation. We offer high performance API integrations for paid accounts that will save your wallet in folds and better mother nature. Web accessibility automation in the current tools outside of A11yWatch can be very harmful due to the cost for the latency, improper algorithms and protocols that waste tons of energy/cpu cycles, and much more due to the state of the challenges of the job without the expertise and dedication required. A11yWatch leads the way in speed, efficiency, accuracy, and robustness when it comes to testing accessibility with more coverage than any other.

Pre-requisites

  • Rust is required if building locally.
  • Nodejs is required if building locally.
  • Docker is required if you are not building locally.

Installing

The CLI can be used to test and build your own instance anywhere.
We have clients in multiple languages and protocols to integrate with your app easier.
See the documentation for more information on getting started with development and etc.

Getting Started

To get started with the fastest and most precise web accessibility platform pick between the Cloud, CLI, Docker, or Sidecar.

A11yWatch Cloud

A11yWatch Cloud is the fastest way to get started with A11yWatch. It provides managed infrastructure as well as an instant and free access for development projects and concepts.

For a step-by-step guide on A11yWatch Cloud, see the docs.

A11yWatch CLI

A11yWatch CLI is an alternative way to get started with A11yWatch. It brings the tools to manage infrastructure, powerful commands for interactivity, and has the ability to automate workflows using tools like Github Actions and more.

Example of a multi page crawl with valid instance up using a11ywatch_cli v0.8.23:

demo.mp4

For a step by step view the docs.

Docker

You can also get started using the standlone docker image locally or self host it.

With a valid docker installation up in a new folder run the following command (replace latest with darwin on macOS or use the IMAGE env var):

# create the bridge network for front-end and backend
docker network create --driver bridge a11ywatch-net
# start the backend
docker run -p 3280:3280 -v ${PWD}:/a11ywatch/conf \
  --network a11ywatch-net \
  --name a11ywatch-backend \
  -e SUPER_MODE=true \
  a11ywatch/a11ywatch:${IMAGE:-latest}
# start the frontend
docker run -p 3000:3000 -v ${PWD}:/a11ywatch/conf \
  --network a11ywatch-net \
  --name a11ywatch-frontend \
  -e SUPER_MODE=true \
  a11ywatch/web

Afterwards open http://localhost:3000 in your browser to continue.

Example of the dashboard crawling multi websites with live updates:

video_crawl.1.mp4

For step by step instructions, view the docs.

Sidecar

If you want to integrate your system with A11yWatch the simplest way is to use the javascript sidecar. The sidecar provides utility methods and launches the system locally for integration with nodejs.

Development

View the contributing docs to get started.

Benchmarks below are done on a Apple M1 Max 64gb memory.

Local (no latency)

Case: https://a11ywatch.com multi site scan. 10x simultaneous runs each ran via localhost to avoid latency.

libraries
Rust[A11yWatch]: crawl 10 times against 30 urls 10 ms
Nodejs[Pa11y-Wave]: crawl 10 times against 25 urls 63 s
Nodejs[Axe-Deque]: crawl 10 times against 25 urls 113 s

External (latency)

Benchmarks using the CLI and hyperfine with network latency.

Single page scan:

hyperfine 'a11ywatch scan -u https://a11ywatch.com' 

Benchmark 1: a11ywatch scan -u https://a11ywatch.com
  Time (mean ± σ):     109.44 ms ±  10 ms    [User: 1.9 ms, System: 2.8 ms]
  Range (min … max):   98.35 ms … 154.3 ms    11 runs

Multi page scan (30 pages):

hyperfine 'a11ywatch crawl -u https://a11ywatch.com' 

Benchmark 1: a11ywatch crawl -u https://a11ywatch.com
  Time (mean ± σ):      0.6715 s ±  0.026 s    [User: 0.003 s, System: 0.003 s]
  Range (min … max):    0.6355 s …  0.714 s    10 runs

A11yWatch helps builds confidence due to handling dynamic parameters and amount of coverage from reports. The system can handle up to 1 million pages under 1 min with 8gb of memory on linux without a sweat.

Some examples on how to integrate with the system. Learn how to use the react-a11ywatch-js hooks and components lib to build custom products or tools.

Support

If you need support, start with the troubleshooting guide, if you still need help please contact us contact.

LICENSE

Check the license file in the root of the project.

a11ywatch's People

Contributors

imgbot[bot] avatar j-mendez avatar jamesbirtles avatar mgifford avatar toyca avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

a11ywatch's Issues

Custom Runner / Policy Creation

Is your feature request related to a problem? Please describe.
Institutions have their own policies that go beyond what a runner is looking for. Custom rules or policies for the runner to look at could create custom alerts, based on a users own policies. IE- flag every .swf file.

Describe the solution you'd like

  1. Create a custom runner.
  2. Add rules to that runner. Each rule contains regular expression(s) to search for and an alert related to the rule.
  3. Add the rule as a runner in the scan.

Describe alternatives you've considered
Use DubBot that has policies https://help.dubbot.com/en/articles/6840211-policy-library-overview

Validate physical and network instances interopt

Describe the bug

Possible issues may occur when instances are started between local, docker, and slim builds if left active.
Giving multiple options for deploying to the OS for scale - debug etc brings in a challenge on sending the correct
messages to the instances accordingly.

Posting this issue for context incase it occurs often or some more time to circle back to.

this may not be a bug

content

If the CLI starts with both the local instance (metal) and docker the instances need to be at different layers - 127.0.0.01 & 0.0.0.0.
The gotcha part is we need any instance variation to be compatible as if it was an elastic.

Areas of entry to bring up valid instances.

  1. CLI isolated (a11ywatch start)
  2. CLI compact ( a11ywatch start -s )
  3. CLI metal ( a11ywatch start -l )
  4. sidecar ( import a11ywatch/a11ywatch or npm run start from the sidecar package )

CLI publishing on a CI

Describe the bug

We had issues with the npm version falling behind the cargo manager due to deploying locally.
The project rust-to-npm was used to convert the project to npm or node usage and during one of the deployments we forgot to ship using the rust-to-npm command using the normal cargo publish.

In order to avoid inconsistencies or accidents we need to move the CLI deployment to a CI.
CircleCI large runners may need to be used due to the tonic gRPC compiling inside the project.

Incomplete text warning

A11yWatch version:

Latest here https://a11ywatch.com/dashboard

I got this error: Crawl did not complete for civicactions.com. Upgrade your account for a larger scan uptime.

But it was truncated

Screenshot of dashboard error

truncated.

It should have the full text (even if it scrolls, even for mobile).

Ultimately, you also want to have a link with that CTA that gets them to sign up. Even just to nudge them ahead. "For $10/month you can get ..."

docker-compose up

On the project page, shouldn't it be:

docker-compose up # view http://localhost:3280 or http://localhost:3280/graphql
WEB_PORT=3000 docker-compose up # start front-end on different port

Least on Linux it doesn't work without that.

Trouble in Ubuntu

I'm making progress here, but think there's a loop in the install that I'm running into.

I ran this for hours before closing the terminal and giving up.

logger exited with code 1
iframe-server    | [nodemon] 2.0.4
iframe-server    | [nodemon] to restart at any time, enter `rs`
iframe-server    | [nodemon] watching path(s): *.*
iframe-server    | [nodemon] watching extensions: js,ts
iframe-server    | [nodemon] starting `ts-node -r ts-node/register src/server.ts`
logger           | yarn run v1.21.1
logger           | $ nodemon -e js,ts -r ts-node/register src/server.ts
logger           | [nodemon] 2.0.4
logger           | [nodemon] to restart at any time, enter `rs`
logger           | [nodemon] watching path(s): *.*
logger           | [nodemon] watching extensions: js,ts
logger           | [nodemon] starting `ts-node -r ts-node/register src/server.ts`
logger           | [nodemon] Internal watch failed: ENOSPC: System limit for number of file watchers reached, watch '/usr/src/app/node_modules/whatwg-mimetype/lib'
iframe-server    | [nodemon] Internal watch failed: ENOSPC: System limit for number of file watchers reached, watch '/usr/src/app/node_modules/@sinonjs/fake-timers/LICENSE'
logger           | error Command failed with exit code 1.
logger           | info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
iframe-server    | error Command failed with exit code 1.
iframe-server    | info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
logger exited with code 1
iframe-server exited with code 1
angelica         | [nodemon] Internal watch failed: ENOSPC: System limit for number of file watchers reached, watch '/usr/src/app/node_modules/jest-snapshot/build/State.js'
angelica         | error Command failed with exit code 1.
angelica         | info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
logger           | yarn run v1.21.1
logger           | $ nodemon -e js,ts -r ts-node/register src/server.ts
angelica exited with code 1
logger           | [nodemon] 2.0.4
logger           | [nodemon] to restart at any time, enter `rs`
logger           | [nodemon] watching path(s): *.*
logger           | [nodemon] watching extensions: js,ts
logger           | [nodemon] starting `ts-node -r ts-node/register src/server.ts`
mav              | 
mav              | > [email protected] dev /usr/src/app
mav              | > nodemon -e js,ts,graphql -r ts-node/register src/server.ts
mav              | 
mav              | [nodemon] 1.9.1
mav              | [nodemon] to restart at any time, enter `rs`
mav              | [nodemon] watching: *.*
mav              | [nodemon] starting `node -r ts-node/register src/server.ts`
mav              | [nodemon] Internal watch failed: ENOSPC: System limit for number of file watchers reached, watch '/usr/src/app/node_modules/ansi-regex/license'
mav              | npm ERR! code ELIFECYCLE
mav              | npm ERR! errno 1
mav              | npm ERR! [email protected] dev: `nodemon -e js,ts,graphql -r ts-node/register src/server.ts`
mav              | npm ERR! Exit status 1
mav              | npm ERR! 
mav              | npm ERR! Failed at the [email protected] dev script.
mav              | npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
mav              | 
mav              | npm ERR! A complete log of this run can be found in:
mav              | npm ERR!     /root/.npm/_logs/2021-02-28T20_58_52_315Z-debug.log
mav exited with code 1
iframe-server    | [nodemon] Internal watch failed: ENOSPC: System limit for number of file watchers reached, watch '/usr/src/app/node_modules/atob/bin/atob.js'
logger           | [nodemon] Internal watch failed: ENOSPC: System limit for number of file watchers reached, watch '/usr/src/app/node_modules/jest-validate/build'
iframe-server    | error Command failed with exit code 1.
iframe-server    | info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
logger           | error Command failed with exit code 1.
logger           | info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
iframe-server exited with code 1
logger exited with code 1
logger           | yarn run v1.21.1
logger           | $ nodemon -e js,ts -r ts-node/register src/server.ts
iframe-server    | yarn run v1.17.3
iframe-server    | $ nodemon -e js,ts -r ts-node/register src/server.ts
logger           | [nodemon] 2.0.4
logger           | [nodemon] to restart at any time, enter `rs`
logger           | [nodemon] watching path(s): *.*
logger           | [nodemon] watching extensions: js,ts
logger           | [nodemon] starting `ts-node -r ts-node/register src/server.ts`
iframe-server    | [nodemon] 2.0.4
iframe-server    | [nodemon] to restart at any time, enter `rs`
iframe-server    | [nodemon] watching path(s): *.*
iframe-server    | [nodemon] watching extensions: js,ts
iframe-server    | [nodemon] starting `ts-node -r ts-node/register src/server.ts`
cdn-server       | yarn run v1.17.3
cdn-server       | $ nodemon -e js,ts -r ts-node/register src/server.ts
cdn-server       | [nodemon] 2.0.4
cdn-server       | [nodemon] to restart at any time, enter `rs`
cdn-server       | [nodemon] watching path(s): *.*
cdn-server       | [nodemon] watching extensions: js,ts
cdn-server       | [nodemon] starting `ts-node -r ts-node/register src/server.ts`
cdn-server       | [nodemon] Internal watch failed: ENOSPC: System limit for number of file watchers reached, watch '/usr/src/app/node_modules/ajv/lib/dot/ref.jst'
cdn-server       | error Command failed with exit code 1.
cdn-server       | info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
cdn-server exited with code 1
api              | 
api              | > [email protected] dev /usr/src/app
api              | > nodemon -e js,ts,graphql -r ts-node/register/transpile-only -r tsconfig-paths/register src/server.ts
api              | 
api              | [nodemon] 1.9.1
api              | [nodemon] to restart at any time, enter `rs`
api              | [nodemon] watching: *.*
api              | [nodemon] starting `node -r ts-node/register/transpile-only -r tsconfig-paths/register src/server.ts`
api              | [nodemon] Internal watch failed: ENOSPC: System limit for number of file watchers reached, watch '/usr/src/app/node_modules/apollo-env/src'
api              | npm ERR! code ELIFECYCLE
api              | npm ERR! errno 1
api              | npm ERR! [email protected] dev: `nodemon -e js,ts,graphql -r ts-node/register/transpile-only -r tsconfig-paths/register src/server.ts`
api              | npm ERR! Exit status 1
api              | npm ERR! 
api              | npm ERR! Failed at the [email protected] dev script.
api              | npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
api              | 
api              | npm ERR! A complete log of this run can be found in:
api              | npm ERR!     /root/.npm/_logs/2021-02-28T20_59_11_091Z-debug.log
api exited with code 1
iframe-server    | [nodemon] Internal watch failed: ENOSPC: System limit for number of file watchers reached, watch '/usr/src/app/node_modules/@nodelib/fs.stat'
logger           | [nodemon] Internal watch failed: ENOSPC: System limit for number of file watchers reached, watch '/usr/src/app/node_modules/express/lib/application.js'
iframe-server    | error Command failed with exit code 1.
iframe-server    | info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
logger           | error Command failed with exit code 1.
logger           | info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
logger exited with code 1
iframe-server exited with code 1
iframe-server    | yarn run v1.17.3
iframe-server    | $ nodemon -e js,ts -r ts-node/register src/server.ts
logger           | yarn run v1.21.1
logger           | $ nodemon -e js,ts -r ts-node/register src/server.ts
iframe-server    | [nodemon] 2.0.4
iframe-server    | [nodemon] to restart at any time, enter `rs`
iframe-server    | [nodemon] watching path(s): *.*
iframe-server    | [nodemon] watching extensions: js,ts
iframe-server    | [nodemon] starting `ts-node -r ts-node/register src/server.ts`
logger           | [nodemon] 2.0.4
logger           | [nodemon] to restart at any time, enter `rs`
logger           | [nodemon] watching path(s): *.*
logger           | [nodemon] watching extensions: js,ts
logger           | [nodemon] starting `ts-node -r ts-node/register src/server.ts`
logger           | [nodemon] Internal watch failed: ENOSPC: System limit for number of file watchers reached, watch '/usr/src/app/node_modules/got/source/request-as-event-emitter.js'
logger           | error Command failed with exit code 1.
logger           | info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
logger exited with code 1
logger           | yarn run v1.21.1
logger           | $ nodemon -e js,ts -r ts-node/register src/server.ts
logger           | [nodemon] 2.0.4
logger           | [nodemon] to restart at any time, enter `rs`
logger           | [nodemon] watching path(s): *.*
logger           | [nodemon] watching extensions: js,ts
logger           | [nodemon] starting `ts-node -r ts-node/register src/server.ts`
angelica         | yarn run v1.22.4
angelica         | $ nodemon -e js,ts,graphql -r ts-node/register -r tsconfig-paths/register src/server.ts
angelica         | [nodemon] 1.9.1
angelica         | [nodemon] to restart at any time, enter `rs`
angelica         | [nodemon] watching: *.*
angelica         | [nodemon] starting `node -r ts-node/register -r tsconfig-paths/register src/server.ts`
angelica         | [nodemon] Internal watch failed: ENOSPC: System limit for number of file watchers reached, watch '/usr/src/app/node_modules/lodash/_baseDelay.js'
angelica         | error Command failed with exit code 1.
angelica         | info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
angelica exited with code 1
logger           | [nodemon] Internal watch failed: ENOSPC: System limit for number of file watchers reached, watch '/usr/src/app/node_modules/jest-serializer/package.json'
iframe-server    | [nodemon] Internal watch failed: ENOSPC: System limit for number of file watchers reached, watch '/usr/src/app/node_modules/rsvp/lib/rsvp'
logger           | error Command failed with exit code 1.
logger           | info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
iframe-server    | error Command failed with exit code 1.
iframe-server    | info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
logger exited with code 1
iframe-server exited with code 1
logger           | [nodemon] 2.0.4
logger           | [nodemon] to restart at any time, enter `rs`
logger           | [nodemon] watching path(s): *.*
logger           | [nodemon] watching extensions: js,ts
logger           | [nodemon] starting `ts-node -r ts-node/register src/server.ts`
iframe-server    | yarn run v1.17.3
iframe-server    | $ nodemon -e js,ts -r ts-node/register src/server.ts
mav              | 
mav              | > [email protected] dev /usr/src/app
mav              | > nodemon -e js,ts,graphql -r ts-node/register src/server.ts
mav              | 
mav              | [nodemon] 1.9.1
mav              | [nodemon] to restart at any time, enter `rs`
mav              | [nodemon] watching: *.*
iframe-server    | [nodemon] 2.0.4
mav              | [nodemon] starting `node -r ts-node/register src/server.ts`
iframe-server    | [nodemon] to restart at any time, enter `rs`
iframe-server    | [nodemon] watching path(s): *.*
iframe-server    | [nodemon] watching extensions: js,ts
iframe-server    | [nodemon] starting `ts-node -r ts-node/register src/server.ts`
mav              | [nodemon] Internal watch failed: ENOSPC: System limit for number of file watchers reached, watch '/usr/src/app/node_modules/jest-util/build/replacePathSepForGlob.d.ts'
mav              | npm ERR! code ELIFECYCLE
mav              | npm ERR! errno 1
mav              | npm ERR! [email protected] dev: `nodemon -e js,ts,graphql -r ts-node/register src/server.ts`
mav              | npm ERR! Exit status 1
mav              | npm ERR! 
mav              | npm ERR! Failed at the [email protected] dev script.
mav              | npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
mav              | 
mav              | npm ERR! A complete log of this run can be found in:
mav              | npm ERR!     /root/.npm/_logs/2021-02-28T20_59_55_209Z-debug.log
mav exited with code 1
client_loop: send disconnect: Broken pipe
$ 

Any ideas?

Unable to confirm email address.

Describe the bug
I am unable to confirm my email address. I never get the email. I see the "Resend" button at the end of "Please confirm your email to enable alerts"

Screenshot with alert

And then

Screenshot saying it has been sent.

It would be useful to say "Please confirm your email [email protected] to enable alerts" rather than just "Please confirm your email to enable alerts"

I think I used that email, but always good to confirm.

Also, the fact that the snack bar is above other elements is in itself an accessibility error.

Screenshot snackbar

Getting the CLI working.

On:
https://github.com/a11ywatch/a11ywatch/tree/main/cli#readme

Change the text to:

# start the instance (right after install or when you don't want to run the upgrade).
a11ywatch start
# if you need to upgrade the instance to new images, run with the upgrade flag.
a11ywatch start --upgrade
# start the instance with web front-end - https://localhost:3270 - interface.
a11ywatch start -f

Can you run the CLI at the same time as you are running the web front-end? Should they both work?

I am trying to run this on a Mac as well. Having a bit more success there.

To make use of the front-end how do you login? Surely there's a default u/p for the admin that needs to be set up. I can now access https://localhost:3270 but can't see much more than that home page.

Not sure if there is anything wrong here.

...
 Compiling os_info v3.5.1
   Finished release [optimized] target(s) in 38.55s
  Replacing /Users/mgifford/.cargo/bin/a11ywatch
   Replaced package `a11ywatch_cli v0.2.25` with `a11ywatch_cli v0.8.23` (executable `a11ywatch`)
(base) mgifford@Mikes-Mac-Studio a11ywatch_new % a11ywatch build

WARN[0000] The "PAGESPEED_API_KEY" variable is not set. Defaulting to a blank string. 
(base) mgifford@Mikes-Mac-Studio a11ywatch_new % a11ywatch start --upgrade
WARN[0000] The "PAGESPEED_API_KEY" variable is not set. Defaulting to a blank string. 
[+] Running 9/8
⠿ Container redis              Removed                                                                  0.3s
⠿ Container crawler            Removed                                                                 10.4s
⠿ Container pagemind           Removed                                                                 10.4s
⠿ Container chrome             Removed                                                                  0.3s
⠿ Container api                Removed                                                                  0.0s
⠿ Container cdn-server         Removed                                                                 10.4s
⠿ Container mav                Removed                                                                 10.3s
⠿ Container mongodb            Removed                                                                  0.0s
⠿ Network a11ywatch_front-net  Error                                                                    0.0s
⠿ Network a11ywatch_back-net   Removed                                                                  0.0s
failed to remove network a11ywatch_front-net: Error response from daemon: error while removing network: network a11ywatch_front-net id cca2782c82c7332107e4d2fa2569b268f94eadaadcc4e525df6b69b6f393a41f has active endpoints
WARN[0000] The "PAGESPEED_API_KEY" variable is not set. Defaulting to a blank string. 
[+] Running 12/12
⠿ mav Pulled                                                                                            1.1s
⠿ redis Pulled                                                                                          1.1s
⠿ chrome Pulled                                                                                         1.1s
⠿ pagemind Pulled                                                                                       1.1s
⠿ cdn-server Pulled                                                                                     1.1s
⠿ api Pulled                                                                                            1.1s
⠿ mongodb Pulled                                                                                        1.1s
⠿ crawler Pulled                                                                                        4.6s
  ⠿ 6875df1f5354 Already exists                                                                         0.0s
  ⠿ e7b691bc65fb Pull complete                                                                          0.9s
  ⠿ 74cc343a29fe Pull complete                                                                          3.1s
  ⠿ d4fd1eebaaea Pull complete                                                                          3.2s
WARN[0000] The "PAGESPEED_API_KEY" variable is not set. Defaulting to a blank string. 
WARN[0000] Found orphan containers ([web]) for this project. If you removed or renamed this service in your compose file, you can run this command with the --remove-orphans flag to clean it up. 
[+] Running 9/9
⠿ Network a11ywatch_back-net  Created                                                                   0.0s
⠿ Container pagemind          Started                                                                   1.1s
⠿ Container redis             Started                                                                   1.0s
⠿ Container mav               Started                                                                   0.9s
⠿ Container cdn-server        Started                                                                   1.2s
⠿ Container chrome            Started                                                                   1.2s
⠿ Container crawler           Started                                                                   0.7s
⠿ Container mongodb           Started                                                                   0.9s
⠿ Container api               Started                                                                   1.3s
(base) mgifford@Mikes-Mac-Studio a11ywatch_new % a11ywatch start -f
WARN[0000] The "PAGESPEED_API_KEY" variable is not set. Defaulting to a blank string. 
[+] Running 9/9
⠿ Container web         Running                                                                         0.0s
⠿ Container cdn-server  Running                                                                         0.0s
⠿ Container mav         Running                                                                         0.0s
⠿ Container chrome      Running                                                                         0.0s
⠿ Container mongodb     Started                                                                         0.2s
⠿ Container redis       Running                                                                         0.0s
⠿ Container pagemind    Running                                                                         0.0s
⠿ Container crawler     Running                                                                         0.0s
⠿ Container api         Running                                                                         0.0s

Looks good. But can't seem to get CLI working:

% a11ywatch scan -d --url https://a11ywatch.com > results.json

error: Found argument '-d' which wasn't expected, or isn't valid in this context

	If you tried to supply `-d` as a value rather than a flag, use `-- -d`

USAGE:
    a11ywatch scan [OPTIONS] --url <URL>

For more information try --help


% a11ywatch scan --url https://a11ywatch.com --fix

thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: tonic::transport::Error(Transport, hyper::Error(Connect, ConnectError("tcp connect error", Os { code: 61, kind: ConnectionRefused, message: "Connection refused" })))', /Users/mgifford/.cargo/registry/src/github.com-1ecc6299db9ec823/a11ywatch_cli-0.8.23/src/rpc/client.rs:31:44
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
(base) mgifford@Mikes-Mac-Studio a11ywatch_new % a11ywatch scan --url https://a11ywatch.com --fix

thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: tonic::transport::Error(Transport, hyper::Error(Connect, ConnectError("tcp connect error", Os { code: 61, kind: ConnectionRefused, message: "Connection refused" })))', /Users/mgifford/.cargo/registry/src/github.com-1ecc6299db9ec823/a11ywatch_cli-0.8.23/src/rpc/client.rs:31:44
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

But I do see the home page - when trying to scan it from localhost I get a "Failed to fetch"
Screenshot with

Explain one thing at a time from start to finish

In Ubuntu I can't --upgrade

$ npm i a11ywatch-cli -g

⸨##################⸩ ⠇ reify:a11ywatch-cli: sill audit bulk request { 'a11ywatch-cli':
⸨##################⸩ ⠇ reify:a11ywatch-cli: sill audit bulk request { 'a11ywatch-cli':
a11ywatch build####⸩ ⠇ reify:a11ywatch-cli: sill audit bulk request { 'a11ywatch-cli':
changed 1 package, and audited 2 packages in 34s
found 0 vulnerabilities

$ a11ywatch build

mongodb uses an image, skipping
web uses an image, skipping
chrome uses an image, skipping
redis uses an image, skipping
cdn-server uses an image, skipping
mav uses an image, skipping
pagemind uses an image, skipping
api uses an image, skipping
crawler uses an image, skipping
Building with native build. Learn about native build in Compose here: https://docs.docker.com/go/compose-native-build/

$ a11ywatch start

WARNING: Some networks were defined but are not used by any service: front-net
Building with native build. Learn about native build in Compose here: https://docs.docker.com/go/compose-native-build/
WARNING: Found orphan containers (logger, web, mongoclient) for this project. If you removed or renamed this service in your compose file, you can run this command with the --remove-orphans flag to clean it up.
mav is up-to-date
redis is up-to-date
Starting crawler ... 
cdn-server is up-to-date
pagemind is up-to-date
chrome is up-to-date
mongodb is up-to-date
Starting crawler ... done

$ a11ywatch start --upgrade

error: Found argument '--upgrade' which wasn't expected, or isn't valid in this context

        If you tried to supply `--upgrade` as a value rather than a flag, use `-- --upgrade`

USAGE:
    a11ywatch start [OPTIONS]

For more information try --help

Chrome not included in standalone mode docker image

A11yWatch version:

a11ywatch_cli 0.10.1

What happened:

After running a11ywatch start --standalone, checking the docker logs for a11ywatch shows the following:

2023-05-17 11:11:51 could not start chrome. Check to see if chrome is downloaded on the system. Error: Executable doesn't exist at /root/.cache/ms-playwright/chromium-1060/chrome-linux/chrome
2023-05-17 11:11:51 ╔═════════════════════════════════════════════════════════════════════════╗
2023-05-17 11:11:51 ║ Looks like Playwright Test or Playwright was just installed or updated. ║
2023-05-17 11:11:51 ║ Please run the following command to download new browsers:              ║
2023-05-17 11:11:51 ║                                                                         ║
2023-05-17 11:11:51 ║     npx playwright install                                              ║
2023-05-17 11:11:51 ║                                                                         ║
2023-05-17 11:11:51 ║ <3 Playwright Team                                                      ║
2023-05-17 11:11:51 ╚═════════════════════════════════════════════════════════════════════════╝ Failed to launch browser.
2023-05-17 11:11:51     at executablePathOrDie (/usr/src/app/node_modules/playwright-core/lib/server/registry/index.js:305:15)
2023-05-17 11:11:51     at Object.executablePathOrDie (/usr/src/app/node_modules/playwright-core/lib/server/registry/index.js:318:43)
2023-05-17 11:11:51     at Chromium._launchProcess (/usr/src/app/node_modules/playwright-core/lib/server/browserType.js:174:39)
2023-05-17 11:11:51     at async Chromium._innerLaunch (/usr/src/app/node_modules/playwright-core/lib/server/browserType.js:105:9)
2023-05-17 11:11:51     at async Chromium._innerLaunchWithRetries (/usr/src/app/node_modules/playwright-core/lib/server/browserType.js:86:14)
2023-05-17 11:11:51     at async ProgressController.run (/usr/src/app/node_modules/playwright-core/lib/server/progress.js:92:22)
2023-05-17 11:11:51     at async Chromium.launch (/usr/src/app/node_modules/playwright-core/lib/server/browserType.js:63:21)
2023-05-17 11:11:51     at async BrowserServerLauncherImpl.launchServer (/usr/src/app/node_modules/playwright-core/lib/browserServerImpl.js:45:21)
2023-05-17 11:11:51 Retry connection error Cannot use 'in' operator to search for 'endpointURL' in undefined

Seems like chrome isn't installed in the docker image

Expected behavior:

Chrome should be in the docker image, and a11ywatch should start

Additional Information:

I've got an install issue on my Mac

Any thoughts on it would be appreciated.

% ./bootstrap.sh

Project being bootstraped
Ready to run in docker or local environments
mgifford@Mikes-Mac-mini a11ywatch % info: downloading installer
npm ERR! code EINVALIDTAGNAMEckFailedOptional: verb npm-session 5cc1080aee08bba
npm ERR! Invalid tag name "&&": Tags may not have any characters that encodeURIComponent encodes.
⸨░░░░░░░░░░░░░░░░░░⸩ ⠙ rollbackFailedOptional: verb npm-session 8302294b117c950
npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/mgifford/.npm/_logs/2021-01-20T19_39_51_289Z-debug.log
npm ERR! code EINVALIDTAGNAME
npm ERR! code EINVALIDTAGNAME
npm ERR! Invalid tag name "&&": Tags may not have any characters that encodeURIComponent encodes.
npm ERR! Invalid tag name "&&": Tags may not have any characters that encodeURIComponent encodes.
⸨░░░░░░░░░░░░░░░░░░⸩ ⠙ rollbackFailedOptional: verb npm-session 8302294b117c950
npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/mgifford/.npm/_logs/2021-01-20T19_39_51_389Z-debug.log
⸨░░░░░░░░░░░░░░░░░░⸩ ⠙ rollbackFailedOptional: verb npm-session 75ef583ef2a0087
npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/mgifford/.npm/_logs/2021-01-20T19_39_51_390Z-debug.log
npm ERR! code EINVALIDTAGNAME
npm ERR! code EINVALIDTAGNAME
npm ERR! Invalid tag name "&&": Tags may not have any characters that encodeURIComponent encodes.
npm ERR! Invalid tag name "&&": Tags may not have any characters that encodeURIComponent encodes.
⸨░░░░░░░░░░░░░░░░░░⸩ ⠹ rollbackFailedOptional: verb npm-session 8302294b117c950
npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/mgifford/.npm/_logs/2021-01-20T19_39_51_698Z-debug.log
⸨░░░░░░░░░░░░░░░░░░⸩ ⠙ rollbackFailedOptional: verb npm-session 1f9766f69742a1b
npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/mgifford/.npm/_logs/2021-01-20T19_39_51_698Z-debug.log
npm ERR! code EINVALIDTAGNAME
npm ERR! code EINVALIDTAGNAME
npm ERR! Invalid tag name "&&": Tags may not have any characters that encodeURIComponent encodes.
npm ERR! Invalid tag name "&&": Tags may not have any characters that encodeURIComponent encodes.
⸨░░░░░░░░░░░░░░░░░░⸩ ⠙ rollbackFailedOptional: verb npm-session 1f9766f69742a1b
npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/mgifford/.npm/_logs/2021-01-20T19_39_51_832Z-debug.log

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/mgifford/.npm/_logs/2021-01-20T19_39_51_833Z-debug.log

Welcome to Rust!

This will download and install the official compiler for the Rust
programming language, and its package manager, Cargo.

Rustup metadata and toolchains will be installed into the Rustup
home directory, located at:

  /Users/mgifford/.rustup

This can be modified with the RUSTUP_HOME environment variable.

The Cargo home directory located at:

  /Users/mgifford/.cargo

This can be modified with the CARGO_HOME environment variable.

The cargo, rustc, rustup and other commands will be added to
Cargo's bin directory, located at:

  /Users/mgifford/.cargo/bin

This path will then be added to your PATH environment variable by
modifying the profile files located at:

  /Users/mgifford/.profile
  /Users/mgifford/.bash_profile
  /Users/mgifford/.zshenv

You can uninstall at any time with rustup self uninstall and
these changes will be reverted.

Current installation options:


   default host triple: x86_64-apple-darwin
     default toolchain: stable (default)
               profile: default
  modify PATH variable: yes

1) Proceed with installation (default)
2) Customize installation
3) Cancel installation
>error: unable to read from stdin for confirmation
npm ERR! code EINVALIDTAGNAME
npm ERR! Invalid tag name "&&": Tags may not have any characters that encodeURIComponent encodes.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/mgifford/.npm/_logs/2021-01-20T19_39_52_259Z-debug.log
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 2 taps (homebrew/core and homebrew/cask).
==> Updated Formulae
Updated 4 formulae.
==> Updated Casks
Updated 2 casks.

Warning: zola 0.13.0 is already installed and up-to-date
To reinstall 0.13.0, run `brew reinstall zola`

It then just sits there.

Error with basic CLI usage

Describe the bug
Error from CLI

To Reproduce

Install

$ a11ywatch --version
a11ywatch_cli 0.2.14

Run crawler as documented:

$ a11ywatch crawl --url https://a11ywatch.com -s -d --fix
error: Found argument '-d' which wasn't expected, or isn't valid in this context

        If you tried to supply `-d` as a value rather than a flag, use `-- -d`

USAGE:
    a11ywatch crawl [OPTIONS] --url <URL>

For more information try --help

Expected behavior
It shouldn't give me an error.

Desktop (please complete the following information):
Debian, cli

Define name and target on --save or add option to append results.

Is your feature request related to a problem? Please describe.
I am trying to save lots of results when running the cli. --save creates results.json that I then have to go and rename in order to not rewrite data from previous runs.

Describe the solution you'd like
Ability to define a name or append results.

Describe alternatives you've considered
I run mv after every run.

Additional context
This is def. a "nice to have", but running mv between cli scans does get annoying.

Fix local frontend module install

A11yWatch version:

latest

What happened:

a11ywatch build -f --local

Fails to install the front-end modules locally due to incorrect package manager usage.

Expected behavior:

Install the modules correctly based on the yarn lock.

yarn installation instead of npm.

Additional Information:

We need to add yarn installation checks before installing.

Add documentation about file size requirements

Just ran into this error:
zsh: file size limit exceeded cargo install a11ywatch_clis

After running:
cargo install a11ywatch_cli

I think that can be fixed by:
ulimit -Sf unlimited

And checked by
ulimit -Ha

Setting the download file size might be something good to add to the docs for installing via cargo.

Integrations with Hosts, Getting Sites and Streaming A11Y Info

Is your feature request related to a problem? Please describe.
Many clients have thousands of sites on services, like Pantheon. How can they quickly scan all the sites they have? Can there be any API relationship?

Describe the solution you'd like
Scanning sites for accessibility errors is as easy as keeping sites up to date with Pantheon's Autopilot.

Describe alternatives you've considered
Running an accessibility platform, like Equalify, as a separate service to support the sites I'm hosting.

Additional context
Pantheon is very developer friendly and has an API-type service, Terminus. I know Digital Ocean has its own marketplace for integrations. WordPress VIP also has something called VIP-CLI.

Error on user registration: error:1E08010C:DECODER routines::unsupported

Describe the bug

When trying to register a user using the docker container (image: a11ywatch/a11ywatch), I get the following error: error:1E08010C:DECODER routines::unsupported

Here is the full body response:

{
  "errors": [
    {
      "message": "error:1E08010C:DECODER routines::unsupported",
      "locations": [
        {
          "line": 2,
          "column": 3
        }
      ],
      "path": [
        "register"
      ],
      "extensions": {
        "code": "INTERNAL_SERVER_ERROR",
        "exception": {
          "library": "DECODER routines",
          "reason": "unsupported",
          "code": "ERR_OSSL_UNSUPPORTED",
          "stacktrace": [
            "Error: error:1E08010C:DECODER routines::unsupported",
            "    at Sign.sign (node:internal/crypto/sig:131:29)",
            "    at Object.sign (/usr/src/app/node_modules/jwa/index.js:152:45)",
            "    at Object.jwsSign [as sign] (/usr/src/app/node_modules/jws/lib/sign-stream.js:32:24)",
            "    at module.exports [as sign] (/usr/src/app/node_modules/jsonwebtoken/sign.js:204:16)",
            "    at signJwt (/usr/src/app/node_modules/@a11ywatch/core/core/utils/auth.js:30:35)",
            "    at /usr/src/app/node_modules/@a11ywatch/core/core/controllers/users/set/create.js:96:38",
            "    at Generator.next (<anonymous>)",
            "    at fulfilled (/usr/src/app/node_modules/@a11ywatch/core/core/controllers/users/set/create.js:5:58)",
            "    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
          ]
        }
      }
    }
  ],
  "data": {
    "register": null
  }
}

To Reproduce
Steps to reproduce the behavior:

  1. Start a docker container using the a11ywatch/a11ywatch image
  2. Set the following env vars (I omitted the key values for safety, but they are both 32 chars, random generated, alphanum strings):
  • SUPER_MODE = true
  • ADMIN_ORIGIN = "*"
  • CLIENT_URL = "http://localhost:3000"
  • PUBLIC_KEY = "..."
  • PRIVATE_KEY = "..."
  1. Try to register a user using the GraphQL API

Expected behavior
A success message indicating that the user has been registered.

Screenshots
N/A

Desktop (please complete the following information):

  • OS: Debian GNU/Linux 12
  • Browser: Chrome
  • Version: 114

Additional context

I got the same result using both the web UI and the GraphQL Apollo Explorer

Trouble with cargo install.

Running $ cargo install a11ywatch_cli in an empty directory in Ubuntu, I get:

cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR
  run pkg_config fail: "Could not run `\"pkg-config\" \"--libs\" \"--cflags\" \"openssl\"`\nThe pkg-config command could not be found.\n\nMost likely, you need to install a pkg-config package for your OS.\nTry `apt install pkg-config`, or `yum install pkg-config`,\nor `pkg install pkg-config`, or `apk add pkgconfig` depending on your distribution.\n\nIf you've already installed it, ensure the pkg-config command is one of the\ndirectories in the PATH environment variable.\n\nIf you did not expect this build to link to a pre-installed system library,\nthen check documentation of the openssl-sys crate for an option to\nbuild the library from source, or disable features or dependencies\nthat require pkg-config."

  --- stderr
  thread 'main' panicked at '

  Could not find directory of OpenSSL installation, and this `-sys` crate cannot
  proceed without this knowledge. If OpenSSL is installed and this crate had
  trouble finding it,  you can set the `OPENSSL_DIR` environment variable for the
  compilation process.

  Make sure you also have the development packages of openssl installed.
  For example, `libssl-dev` on Ubuntu or `openssl-devel` on Fedora.

  If you're in a situation where you think the directory *should* be found
  automatically, please open a bug at https://github.com/sfackler/rust-openssl
  and include information about your system as well as this message.

  $HOST = x86_64-unknown-linux-gnu
  $TARGET = x86_64-unknown-linux-gnu
  openssl-sys = 0.9.80


  It looks like you're compiling on Linux and also targeting Linux. Currently this
  requires the `pkg-config` utility to find OpenSSL but unfortunately `pkg-config`
  could not be found. If you have OpenSSL installed you can likely fix this by
  installing `pkg-config`.

  ', /home/mike/.cargo/registry/src/github.com-1ecc6299db9ec823/openssl-sys-0.9.80/build/find_normal.rs:191:5
  note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
warning: build failed, waiting for other jobs to finish...
error: failed to compile `a11ywatch_cli v0.8.23`, intermediate artifacts can be found at `/tmp/cargo-install0eoN1o`

Should I just wait till the .9 release?

https://a11ywatch.com/web-pages is a 404 for me

Describe the bug
When I try to view the "Pages" link (under the "More options" gear icon) it goes to a 404 page

To Reproduce
Steps to reproduce the behavior:

  1. Click the 'More options' gear to expand the dropdown.
  2. Click on the "Pages" link.
  3. It goes to https://a11ywatch.com/web-pages which on Jan 26 is a 404.

Expected behavior
It should go to a page with Pages.

Desktop (please complete the following information):

  • OS: Mac 12.4
  • Browser Chrome
  • Version 109.0.5414.87

Other notes:
I am new and not a paid subscriber, so maybe that is why the page is a 404 for me. idk.

Include text command used prior to showing its use in the video.

I on the project page there is a demo of the use of a11ywatch crawl --url https://a11ywatch -d -n -s > results.json, which should be something that anyone connected to the internet should be able to run.

It is good to have the super short video for folks to see the expected results, but better to copy the text directly, than try to type it out after pausing the video.

Also, "Found argument '-d' which wasn't expected, or isn't valid in this context" and "Found argument '-n' which wasn't expected, or isn't valid in this context" in my instance. But that's really an afterthought.

Might also be useful to provide an example of what the results.json should look like, so that people know what a successful scan looks like.

Invalid JWT generated during local cli crawls

A11yWatch version:

0.10.2 CLI

What happened:

https://gyazo.com/d88267cd8d36789ca3bc59b2b4bedc9d
https://pastebin.com/EjYfP9Us

When running a command, such as a11ywatch crawl -d -f -u jeffmendez.com, using the locally installed CLI, the command returns a non-useful response such as:
{"code":0,"data":null,"message":"","success":false}
Occasionally, this message will appear:
thread 'main' panicked at 'called \Option::unwrap()on aNone value', /home/[USERNAME]/.cargo/registry/src/github.com-1ecc6299db9ec823/a11ywatch_cli-0.10.2/src/utils/csv.rs:48:44 note: run with \RUST_BACKTRACE=1` environment variable to display a backtrace`
This is correlated with a long JWT error described in the pastebin

Expected behavior:

The command runs and ouputs a large, valid JSON. No fatal errors occur in the main command output.

Additional Information:

https://gyazo.com/76fe75f6076e7c2debf90be5a05e235c - my neofech

Multi site crawl linux docker build

multi site crawls are not returning data appropriately. The crawler seems to be online but, the pages are not responding with data.

The standalone docker image works fine on linux, so it seems to be a network related issue.

ex: s is for standalone

a11ywatch build -s --upgrade
a11ywatch start -s
a11ywatch crawl -u https://a11ywatch.com

Install error

I'm not sure if this is an issue with choosing the stable release of node, or what, but after installing with node I get

   Compiling string_cache_codegen v0.4.4
   Compiling devise_core v0.2.0
error[E0554]: `#![feature]` may not be used on the stable release channel
 --> /Users/mgifford/.cargo/registry/src/github.com-1ecc6299db9ec823/devise_core-0.2.0/src/lib.rs:1:1
  |
1 | #![feature(proc_macro_diagnostic, proc_macro_span)]
  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error[E0554]: `#![feature]` may not be used on the stable release channel
 --> /Users/mgifford/.cargo/registry/src/github.com-1ecc6299db9ec823/devise_core-0.2.0/src/lib.rs:2:1
  |
2 | #![feature(crate_visibility_modifier)]
  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error[E0554]: `#![feature]` may not be used on the stable release channel
 --> /Users/mgifford/.cargo/registry/src/github.com-1ecc6299db9ec823/devise_core-0.2.0/src/lib.rs:3:1
  |
3 | #![feature(concat_idents)]
  | ^^^^^^^^^^^^^^^^^^^^^^^^^^

   Compiling synstructure v0.12.3
error: aborting due to 3 previous errors

For more information about this error, try `rustc --explain E0554`.
error: could not compile `devise_core`

To learn more, run the command again with --verbose.
warning: build failed, waiting for other jobs to finish...
error: build failed

I'm not sure if this is related to using brew to install rust on my Mac.

I'm also seeing a failure with cargo in Linux. Easier to install there with a standard apt-get approach:
apt-get install cargo

Scan XML Sitemap

Is your feature request related to a problem? Please describe.
Va.gov's XML sitemap has over 17k pages. An A11yWatch crawl only revealed 739 pages.

Describe the solution you'd like
a11watch xml --url https://www.va.gov/sitemap.xml

Describe alternatives you've considered
Using Equalify and waiting 272000 seconds to crawl.

Giant crawls produce weird errors

A11yWatch version:

a11ywatch_cli 0.8.30

What happened:

a11ywatch crawl --url va.gov --save -t -S produces different failures. Sometimes I get a broken pipe failure. Othertimes the crawl seems to just crawl the homepage and produces the result:

{"code":0,"data":[{"cdn_connected":false,"domain":"www.va.gov","insight":null,"issues":[],"issues_info":{"ada_score":100,"error_count":0,"issue_meta":{"skip_content_included":true},"issues_fixed_by_cdn":0,"notice_count":0,"possible_issues_fixed_by_cdn":0,"total_issues":0,"warning_count":0},"last_scan_date":"2023-01-17T23:24:03.059Z","page_load_time":{"color":"#A5D6A7","duration":306,"duration_formated":"Lightning Fast"},"script":null,"url":"https://www.va.gov/disability/file-disability-claim-form-21-526ez","user_id":0}],"message":"Crawled 1 page in 2.580977003s","success":true}

Expected behavior:

Completed a crawl with all crawled page errors.

page.evaluate: TypeError: Cannot read properties of undefined (reading 'run')

Running the latest a11ywatch/kayle instance in a container as pulled from hub.docker.com, an exception (?) is raised when visiting certain webpages (example: https://www.bolagsverket.se/)

Curl invocation to trigger a scan:

curl --request POST http://localhost:3280/api/scan --header 'Content-Type: application/json' --data-raw '{ "url": "https://www.bolagsverket.se/" }'

Inside the container, the following output is generated inside the container following the curl invocation:

page.evaluate: TypeError: Cannot read properties of undefined (reading 'run')
at eval (eval at evaluate (:202:30), <anonymous>:1:90)
at UtilityScript.evaluate (<anonymous>:204:17)
at UtilityScript.<anonymous> (<anonymous>:1:44)
at o (/usr/src/app/node_modules/kayle/build/kayle.js:1:354)
at s (/usr/src/app/node_modules/kayle/build/kayle.js:1:715)
at async g (/usr/src/app/node_modules/kayle/build/kayle.js:1:1685)

The JSON output returned from the curl invocation does not any accessibility issues on the visited page. A duration of 0 suggests no check was done at all.

{"data":{"domain":"www.bolagsverket.se","url":"https://www.bolagsverket.se/","pageLoadTime":{"duration":0,"durationFormated":"Cached/Extremely Fast"},"lastScanDate":"2023-10-06T12:14:00.079Z","issues":[],"issuesInfo":{"possibleIssuesFixedByCdn":0,"totalIssues":0,"issuesFixedByCdn":0,"errorCount":0,"warningCount":0,"noticeCount":0,"accessScore":0,"issueMeta":{"skipContentIncluded":true}},"online":true},"success":true,"code":200,"message":""}

I am quite certain that my a11ywatch/kayle/curl setup is working correctly otherwise, as I get back sane results for other URLs.

PAGESPEED_API_KEY, COMPUTER_VISION_ENDPOINT & COMPUTER_VISION_SUBSCRIPTION_KEY

Tried it again:

% git pull
% cargo install a11ywatch_cli
...
   Replacing /Users/mgifford/.cargo/bin/a11ywatch
    Replaced package `a11ywatch_cli v0.2.14` with `a11ywatch_cli v0.2.22` (executable `a11ywatch`)
% a11ywatch start
WARNING: The PAGESPEED_API_KEY variable is not set. Defaulting to a blank string.
WARNING: The COMPUTER_VISION_ENDPOINT variable is not set. Defaulting to a blank string.
WARNING: The COMPUTER_VISION_SUBSCRIPTION_KEY variable is not set. Defaulting to a blank string.
WARNING: Some networks were defined but are not used by any service: front-net
% a11ywatch scan -u https://hbo.com
{"code":0,"data":null,"message":"","success":false}

Had much better luck after using this instead of the git pull:
% git config pull.rebase true

And then replacing the rest of the steps.

Are the warnings a concern?

Provide more context for using the Docker instance

I seem to be able to set up the docker instance, no problem, but not sure how to run it.

docker pull a11ywatch/a11ywatch runs with no problem. But then what?

$ a11ywatch start gives me a series of errors.

If I wanted to do a basic scan, would I use a11ywatch scan --url https://a11ywatch.com -s -d still? The docs are not clear on this.

Document valid instances

Looking at #38

I think it would be important to define what the valid instances are.

- CLI isolated (a11ywatch start) - what does that give me?
- CLI compact ( a11ywatch start -s ) - why would I run a compact version vs the isolated version?
- CLI metal ( a11ywatch start -l ) - I have no idea what this would be
- sidecar ( import a11ywatch/a11ywatch or npm run start from the sidecar package) - is a sidecar a common JavaScript pattern? I am not familiar with it and am not finding a good definition elsewhere. Still have the same questions though about how it compares with the others. What makes this easier than a CLI?

This should be documented in the core package https://github.com/a11ywatch/a11ywatch and in the sub projects too https://github.com/a11ywatch/sidecar

It shouldn't be assumed that we know how these are different.

0 Errors Reported with --results-parsed-list

A11yWatch version:

0.8.30

What happened:

a11ywatch crawl --url https://decubing.com -d --save

yields many errors, then

a11ywatch --results-parsed-list

says there were no errors on any pages

Expected behavior:

there should be many errors on each page, as I see in the crawl output.

Additional Information:

✌️❤️

Update the Readme.md

What are the requirements to run this?

The Readme.md should include this. Linux, MacOX?

Ubuntu:

$ cargo install a11ywatch_cli
    Updating crates.io index
  Installing a11ywatch_cli v0.2.13
error: failed to compile `a11ywatch_cli v0.2.13`, intermediate artifacts can be found at `/tmp/cargo-installNrYhuI`

Caused by:
  failed to download `rustls v0.20.6`

Caused by:
  unable to get packages from source

Caused by:
  failed to parse manifest at `/home/mike/.cargo/registry/src/github.com-1ecc6299db9ec823/rustls-0.20.6/Cargo.toml`

Caused by:
  feature `resolver` is required

  this Cargo does not support nightly features, but if you
  switch to nightly channel you can add
  `cargo-features = ["resolver"]` to enable this feature

Mac:

% cargo install a11ywatch_cli
    Updating crates.io index
zsh: file size limit exceeded  cargo install a11ywatch_clis   

a11ywatch build command fails with "Failed to execute compose-compose command" error

A11yWatch version:

a11ywatch_cli v0.8.35
using cargo

What happened:

Greetings,
I am trying to install a11ywatch_cli using cargo on Pop!_OS 22.04.

I have installed docker, docker-compose, OpenSSL (using provided command), npm, Node.js and Rust. when i run "a11ywatch build" i get the following error:

constellation@pop-os:~$ RUST_BACKTRACE=full a11ywatch build
thread 'main' panicked at 'Failed to execute compose-compose command.: Os { code: 2, kind: NotFound, message: "No such file or directory" }', /home/constellation/.cargo/registry/src/github.com-1ecc6299db9ec823/a11ywatch_cli-0.8.35/src/launchers/docker.rs:26:10
stack backtrace:
0: 0x55a262b4e860 - std::backtrace_rs::backtrace::libunwind::trace::h32eb3e08e874dd27
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/../../backtrace/src/backtrace/libunwind.rs:93:5
1: 0x55a262b4e860 - std::backtrace_rs::backtrace::trace_unsynchronized::haa3f451d27bc11a5
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
2: 0x55a262b4e860 - std::sys_common::backtrace::_print_fmt::h5b94a01bb4289bb5
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/sys_common/backtrace.rs:66:5
3: 0x55a262b4e860 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::hb070b7fa7e3175df
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/sys_common/backtrace.rs:45:22
4: 0x55a262b745ce - core::fmt::write::hd5207aebbb9a86e9
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/core/src/fmt/mod.rs:1202:17
5: 0x55a262b483e5 - std::io::Write::write_fmt::h3bd699bbd129ab8a
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/io/mod.rs:1679:15
6: 0x55a262b50093 - std::sys_common::backtrace::_print::h7a21be552fdf58da
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/sys_common/backtrace.rs:48:5
7: 0x55a262b50093 - std::sys_common::backtrace::print::ha85c41fe4dd80b13
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/sys_common/backtrace.rs:35:9
8: 0x55a262b50093 - std::panicking::default_hook::{{closure}}::h04cca40023d0eeca
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/panicking.rs:295:22
9: 0x55a262b4fd7f - std::panicking::default_hook::haa3ca8c310ed5402
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/panicking.rs:314:9
10: 0x55a262b5073a - std::panicking::rust_panic_with_hook::h7b190ce1a948faac
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/panicking.rs:698:17
11: 0x55a262b50637 - std::panicking::begin_panic_handler::{{closure}}::hbafbfdc3e1b97f68
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/panicking.rs:588:13
12: 0x55a262b4ed0c - std::sys_common::backtrace::__rust_end_short_backtrace::hda93e5fef243b4c0
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/sys_common/backtrace.rs:138:18
13: 0x55a262b50352 - rust_begin_unwind
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/panicking.rs:584:5
14: 0x55a262851be3 - core::panicking::panic_fmt::h8d17ca1073d9a733
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/core/src/panicking.rs:142:14
15: 0x55a262851d33 - core::result::unwrap_failed::hfaddf24b248137d3
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/core/src/result.rs:1785:5
16: 0x55a26297be2d - a11ywatch::launchers::docker::build_backend::h14af8146fde17910
17: 0x55a2628f9d0c - a11ywatch::commands::build_machine::Build::process::h3b170b715780bb19
18: 0x55a26295e690 - a11ywatch::main::h6a3cf55ef99d8ef2
19: 0x55a2628e9293 - std::sys_common::backtrace::__rust_begin_short_backtrace::h67819edb9b794c3c
20: 0x55a26293db19 - std::rt::lang_start::{{closure}}::hf7c7d1b0d63c106a
21: 0x55a262b42e3f - core::ops::function::impls::<impl core::ops::function::FnOnce for &F>::call_once::hb69be6e0857c6cfb
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/core/src/ops/function.rs:283:13
22: 0x55a262b42e3f - std::panicking::try::do_call::h396dfc441ee9c786
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/panicking.rs:492:40
23: 0x55a262b42e3f - std::panicking::try::h6cdda972d28b3a4f
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/panicking.rs:456:19
24: 0x55a262b42e3f - std::panic::catch_unwind::h376039ec264e8ef9
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/panic.rs:137:14
25: 0x55a262b42e3f - std::rt::lang_start_internal::{{closure}}::hc94720ca3d4cb727
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/rt.rs:148:48
26: 0x55a262b42e3f - std::panicking::try::do_call::h2422fb95933fa2d5
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/panicking.rs:492:40
27: 0x55a262b42e3f - std::panicking::try::h488286b5ec8333ff
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/panicking.rs:456:19
28: 0x55a262b42e3f - std::panic::catch_unwind::h81636549836d2a25
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/panic.rs:137:14
29: 0x55a262b42e3f - std::rt::lang_start_internal::h6ba1bb743c1e9df9
at /rustc/897e37553bba8b42751c67658967889d11ecd120/library/std/src/rt.rs:148:20
30: 0x55a26295f878 - main
31: 0x7fd02be29d90 - __libc_start_call_main
at ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
32: 0x7fd02be29e40 - __libc_start_main_impl
at ./csu/../csu/libc-start.c:392:3
33: 0x55a262851f15 - _start
34: 0x0 -

If i run "sudo a11ywatch build" it says "sudo: a11ywatch: command not found"

##Steps to reproduce:

Installed a11ywatch_cli via cargo
Attempted to run the command "a11ywatch build"
Encountered the error "Failed to execute compose-compose command: Os { code: 2, kind: NotFound, message: "No such file or directory" }"

Expected behavior:

a11ywatch builds with a success message at the end.

Additional Information:

constellation@pop-os

OS: Pop!_OS 22.04 LTS x86_64
Host: TUF Gaming FX505DT_FX505DT 1.0
Kernel: 6.0.12-76060006-generic
Uptime: 50 mins
Packages: 3070 (dpkg), 11 (flatpak), 16 (snap)
Shell: bash 5.1.16
Resolution: 1920x1080
DE: Plasma 5.24.7
WM: KWin
WM Theme: Utterly-Round
Theme: [Plasma], Lavanda-Dark [GTK2/3]
Icons: MacOS-3D-Icons-Blue-Dark [Plasma], MacOS-3D-Icons-Blue-Dark [GTK2/3]
Terminal: konsole
CPU: AMD Ryzen 5 3550H with Radeon Vega Mobile Gfx (8) @ 2.100GHz
GPU: AMD ATI Radeon Vega Series / Radeon Vega Mobile Series
GPU: NVIDIA GeForce GTX 1650

##What I have tried
Multiple restarts and reloading my bashrc file
installing docker-compose and making it chmod +x
Tried running the command with RUST_BACKTRACE=1 but did not provide any useful information
Checked if Docker and compose were installed and they were.
Checked if the PATH variable was set correctly and it was.
Tried to run the command with sudo but it says command not found.
error message indicates that the compose-compose command was not found

I cannot find any information about this compose-compose command that it mentioned in the error

[Feature] Auto build on A11yWatch start

Is your feature request related to a problem? Please describe.

Currently we have a build step that sets up the project configuration for startup. It would be relatively low entry on cost on conjoining the build step for the system start since the command is not ran frequent.

Describe the solution you'd like

Remove the a11ywatch build command and leave it to a11ywatch start to handle the initial config if missing.

Additional context
This relates to the CLI and the version needs to move to 0.9.0 to avoid breaking CI installs that increment patches.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.