Giter Club home page Giter Club logo

screenshots-cli's Introduction

Screenshots

Use puppeteer to take screenshots of a list of URLs for multiple viewports

Installation

yarn add --global screenshots-cli

CLI Usage


  Take screenshots for a list of URLs and viewports

  Usage
    $ screenshots

  Options
    --version          Output version
    --urls             List of comma-separated URLs to visit. (Must include protocol)
    --viewports        List of comma-separated viewport dimensions to take screenshots.
                          Specify both width and height like: 1440x768,768x768
                          OR only specify the width to capture the entire page.
                          You can use a combination of both.

    --outputDir, -o    Screenshots directory name. Defaults to $pwd/screenshots
    --emptyDir, -rm    Empty the output directory

  Authentication Options
    --loginUrl         URL to authenticate with username/password
    --username, -u     Auth username
    --password, -p     Auth password

  Examples
    $ screenshots \
        --urls=https://mysite.com \
        --viewports=1440x768,768,480,320

Programmatic Usage

const path = require('path')
const screenshots = require('screenshots-cli')

screenshots({
  urls: ['https://mysite.com/login'],
  viewports: [
    [1440, 768], // [width, height] - height is optional
  ],
  outputDir: path.join(process.cwd(), 'screenshots'), // default
})
  .then()
  .catch()

Usage with auth

const path = require('path')
const screenshots = require('screenshots-cli')

screenshots({
  urls: ['https://mysite.com'],
  loginUrl: 'https://mysite.com/login',
  username: process.env.USERNAME,
  password: process.env.PASSWORD,
})
  .then()
  .catch()

Customising login form selectors

const path = require('path')
const screenshots = require('screenshots-cli')

screenshots({
  urls: ['https://mysite.com/myaccount'],
  loginUrl: 'https://mysite.com/login',
  username: process.env.USERNAME,
  password: process.env.PASSWORD,
  selectors: {
    username: 'input[type="username"]',
    password: 'input[type="password"]',
    submit: 'input[type="submit"]',
  },
})
  .then(results => {
    // Returns array of screenshot objects
    // See below for results type definition
  })
  .catch()

Results schema

[
  {
    filename: String,
    createdAt: Date,
    uri: Base64
  },
  ...
]

Options

Option Type Required Default Description
urls Array Yes Array of URLs to visit
viewports Array [[1440], [768], [425], [320]] Viewport dimensions to take for each URL
outputDir String path.join(process.cwd(), 'screenshots') Directory to write screenshots
emptyDir Boolean false Empty the output directory
loginUrl String URL to authenticate
username String Auth username
password String Auth password
selectors Object { username: 'input[type="email"]', password: 'input[type="password"]', submit: 'form button' } HTMLElement selectors for login form

Running locally

Unauthenticated routes

yarn start --urls=https://mysite.com

Authenticated routes

You will be prompted for your username and password. The password will be hidden

yarn start:auth --urls=https://mysite.com/myaccount

Diffing two images

Make sure you have imagemagick installed locally:

brew install imagemagick

Compare images:

compare screenshots/one.png screenshots/two.png [-highlight-color blue] -compose src diff.png

screenshots-cli's People

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

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.