python-spectacles

Description


License
MIT
Install
pip install python-spectacles==1.4.2

Documentation

Python Spectacles

For detailed documentation, read the docs

Django Spectacles

Build Status

Documentation Status

Write end-to-end tests in YAML, run them with Python and output your results in Markdown

Installation

pip install python-spectacles

Running spectacles:

spectacles [OPTIONS] BASE_URL

e.g.:

spectacles http://google.com

More details on CLI and options

python spectacles --help
Usage: runner.py [OPTIONS] BASE_URL

Options:
  --driver TEXT               Select the browser driver you would like to use
                              (phantomjs, chrome, firefox)
  --spec-location TEXT        A glob for finding spec files
  --out-location TEXT         path to the directory where we will output the
                              spec results
  --screenshot-location TEXT  path where we will save screenshots
  --help                      Show this message and exit.

Quickstart

The default project layout is like this:

 .
 |_ specs/ # put your yaml specs here
 |_ reports/
     |_ screenshots # any screenshots you take will be saved here
     |_ specs # spec reports will be saved here

You can create that layout with the following commands:

mkdir specs
mkdir -p reports/screenshots
mkdir -p reports/specs

Let's create a quick spec:

./specs/google_im_lucky.yml

---
- scenario: I'm feeling lucky
  steps: 
  - goto: /
  - screenshot: {}

  - expect_elements :
    - "#lst-ib": "search input"   
  - fill_fields:
    - q: "testing"
  - wait: 1
  - click: "[name='btnG']"
  - wait: 5
  - wait_for_element : "#rcnt"
  - screenshot:
  		widths: [375, 768, 990, 1200, 1600]

Run your spec:

spectacles https://www.google.com

Results:

  1. You should find a collection of screenshots at: ./reports/screenshots

Output:

##I'm feeling lucky

  • Go to: /
  • ✓ Check that search input exists
  • enter django-spectacles into field:q
  • ✓ Check that [name='btnG'] exists
  • Click button:
  • waiting for #rcnt to load
  • ✓ Element has loaded: #rcnt
  • Click the first link
  • ✓ Check that h3.r a exists
  • Click button: GitHub - toast38coza/django-spectacles: Write Integration tests in ...

TODO:

Some improvements I would like to ship in the near future:

  • Print results
  • Generate reports
  • Prompts
  • Variables
  • Refactor / neaten
  • Improve test coverage
  • Remove dependency on Django
  • Take arguments (e.g: domain, output directory, glob for yml files)
  • Maybe we don't need to run this as a test?

Note to self: deploying to pypi:

  1. Update version in setup.py

  2. Upload to pypi:

     python setup.py sdist upload -r pypi