Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
This repository was archived by the owner on Nov 24, 2018. It is now read-only.
/chromelessPublic archive

🖥 Chrome automation made simple. Runs locally or headless on AWS Lambda.

License

NotificationsYou must be signed in to change notification settings

schickling/chromeless

Repository files navigation

This project is deprecated in favor forPuppeteer.Thanks to all the contributors who made this project possible.

Chromeless

npmdownloadscirclecicodecovdependenciesnodesemantic-release

Chrome automation made simple. Runs locally or headless on AWS Lambda. (See Demo)

Chromeless can be used to...

  • Run 1000s ofbrowser integration tests in parallel ⚡️
  • Crawl the web & automate screenshots
  • Write bots that require a real browser
  • Do pretty much everything you've usedPhantomJS, NightmareJS or Selenium for before

Examples

▶️ Try it out

You can try out Chromeless and explore the API in the browser-baseddemo playground (source).

Contents

  1. How it works
  2. Installation
  3. Usage
  4. API Documentation
  5. Configuring Development Environment
  6. FAQ
  7. Contributors
  8. Credits
  9. Help & Community

How it works

With Chromeless you can control Chrome (open website, click elements, fill out forms...) using anelegant API. This is useful for integration tests or any other scenario where you'd need to script a real browser.

There are 2 ways to use Chromeless

  1. Running Chrome on your local computer
  2. Running Chrome on AWS Lambda and controlling it remotely

1. Local Setup

For local development purposes where a fast feedback loop is necessary, the easiest way to use Chromeless is by controlling your local Chrome browser. Just follow theusage guide to get started.

2. Remote Proxy Setup

You can also run Chrome inheadless-mode on AWS Lambda. This way you can speed up your tests by running them in parallel. (InGraphcool's case this decreased test durations from ~20min to a few seconds.)

Chromeless comes out of the box with a remote proxy built-in - the usage stays completely the same. This way you can write and run your tests locally and have them be executed remotely on AWS Lambda. The proxy connects to Lambda through a Websocket connection to forward commands and return the evaluation results.

Installation

npm install chromeless

Proxy Setup

The project contains aServerless service for running and driving Chrome remotely on AWS Lambda.

  1. Deploy The Proxy service to AWS Lambda. More detailshere
  2. Follow the usage instructionshere.

Usage

Using Chromeless is similar to other browser automation tools. For example:

const{ Chromeless}=require('chromeless')asyncfunctionrun(){constchromeless=newChromeless()constscreenshot=awaitchromeless.goto('https://www.google.com').type('chromeless','input[name="q"]').press(13).wait('#resultStats').screenshot()console.log(screenshot)// prints local file path or S3 urlawaitchromeless.end()}run().catch(console.error.bind(console))

Local Chrome Usage

To run Chromeless locally, you need a recent version of Chrome or Chrome Canary installed (version 60 or greater). By default, chromeless will start Chrome automatically and will default to the most recent version found on your system if there's multiple. You can override this behavior by starting Chrome yourself, and passing a flag oflaunchChrome: false in theChromeless constructor.

To launch Chrome yourself, and open the port for chromeless, follow this example:

alias canary="/Applications/Google\ Chrome\ Canary.app/Contents/MacOS/Google\ Chrome\ Canary"canary --remote-debugging-port=9222

Or run Chrome Canary headless-ly:

canary --remote-debugging-port=9222 --disable-gpu --headless

Or run Chrome headless-ly on Windows:

cd"C:\Program Files (x86)\Google\Chrome\Application"chrome --remote-debugging-port=9222 --disable-gpu --headless

Proxy Usage

Follow the setup instructionshere.

Then using Chromeless with the Proxy service is the same as running it locally with the exception of theremote option.Alternatively you can configure the Proxy service's endpoint with environment variables.Here's how.

constchromeless=newChromeless({remote:{endpointUrl:'https://XXXXXXXXXX.execute-api.eu-west-1.amazonaws.com/dev',apiKey:'your-api-key-here',},})

API Documentation

Chromeless constructor options

Chromeless methods

Chrome methods

Configuring Development Environment

Requirements:

  • NodeJS version 8.2 and greater
  1. Clone this repository
  2. Runnpm install
  3. To build:npm run build

Linking this NPM repository

  1. Go to this repository locally
  2. Runnpm link
  3. Go to the folder housing your chromeless scripts
  4. Runnpm link chromeless

Now your local chromeless scripts will use your local development of chromeless.

FAQ

How is this different fromNightmareJS, PhantomJS or Selenium?

TheChromeless API is very similar to NightmareJS as their API is pretty awesome. The big difference is thatChromeless is based on Chrome inheadless-mode, and runs in a serverless function in AWS Lambda. The advantage of this is that you can run hundreds of browsers in parallel, without having to think about parallelisation. Running integration Tests for example is much faster.

I'm new to AWS Lambda, is this still for me?

You still can use this locally without Lambda, so yes. Besides that, here is asimple guide on how to set the lambda function up forChromeless.

How much does it cost to run Chromeless in production?

The compute price is $0.00001667 per GB-s and the free tier provides 400,000 GB-s. The request price is $0.20 per 1 million requests and the free tier provides 1M requests per month.

This means you can easily execute > 100.000 tests for free in the free tier.

Are there any limitations?

If you're running Chromeless on AWS Lambda, the execution cannot take longer than 5 minutes which is the current limit of Lambda. Besides that, every feature that's supported in Chrome is also working with Chromeless. The maximal number of concurrent function executions is 1000.AWS API Limits

Are there commercial options?

Although Chromeless is the easiest way to get started running Chrome on Lambda, you may not have time to build and manage your own visual testing toolkit. Commercial options include:

Troubleshooting

Error: Unable to get presigned websocket URL and connect to it.

In case you get an error like this when running the Chromeless client:

{ HTTPError: Response code 403 (Forbidden)    at stream.catch.then.data (/code/chromeless/node_modules/got/index.js:182:13)    at process._tickDomainCallback (internal/process/next_tick.js:129:7)  name: 'HTTPError',...Error: Unable to get presigned websocket URL and connect to it.

Make sure that you're running at least version1.19.0 ofserverless. It is a knownissue, that the API Gateway API keys are not setup correctly in older Serverless versions. Best is to runnpm run deploy within the project as this will use the local installed version ofserverless.

Resource ServerlessDeploymentBucket does not exist for stack chromeless-serverless-dev

In case the deployment of the serverless function returns an error like this:

  Serverless Error ---------------------------------------  Resource ServerlessDeploymentBucket does not exist for stack chromeless-serverless-dev

Please check, that there is no stack with the namechromeless-serverless-dev existing yet, otherwise serverless can't correctly provision the bucket.

No command gets executed

In order for the commands to be processed, make sure, that you call one of the commandsscreenshot,evaluate,cookiesGetAll orend at the end of your execution chain.

Contributors

A big thank you to all contributors and supporters of this repository 💚

joelgriffithadieuadieuschicklingtimsuchanekChrisgozdcriticalbhd2semeth-githubixxhaxHazealignjoeyvandijkliadymatthewmuellerseangranseesorenbstoddwpricevladgolubev

Credits

Help & CommunitySlack Status

Join ourSlack community if you run into issues or have questions. We love talking to you!

Prisma


[8]ページ先頭

©2009-2025 Movatter.jp