0.1.2 • Published 7 years ago

plus.garden v0.1.2

Weekly downloads
29
License
MIT
Repository
github
Last release
7 years ago

Plus.garden! NPM version Dependency Status

API Reference | CLI | CSS Selectors | Features and Definitions | Config | Modules

Garden is a BDD testing framework for browser based apps and websites.

It's built on Node.js, Сucumber.js, Selenium WebDriver API.


Main Features

  • Simple API to manage browser (WebDriver)
  • Using CSS3 selectors to interact with DOM
  • All network interactions data are accessible within the tests (headers, body, size etc)
  • Built-in command-line test runner
  • Head and headless browser testing (phantom.js, chrome, firefox)

Requirements

  • node.js

Getting started

  1. Make a new directory, and cd into it:

    mkdir my-new-project && cd $_
  2. Setup garden environment by generator-garden

    npm install -g yo generator-garden
  3. Then generate your new project:

    yo garden
  4. Run first test

    NOTE: If you use plus.garden.webdriver, please start Selenium server first.

    node garden.js test 

    It execute next scenario

      Scenario: I want to see good health
        Given  I am on external host "https://twitter.com/"
        Then   status code should be 200
        Then   take screenshot

Usage

Generator of garden generates the simplest scenario by default:

your folder/features/Health.feature

@webdriver.init @webdriver.quit
Feature: Health feature

  @health
  Scenario: I want to see good health
    Given  I am on external hosts "https://twitter.com/" with element
    Then   take screenshot

with step defenitions that cover this, it looks like:

your folder/features/step_definitions/common.js

var {defineSupportCode} = require('cucumber');
defineSupportCode(function({ Given, Then }) {
    Given(/^I am on "(.+)"/, function (url, callback) {
        this.browser.visit(url).then(callback);
    });

    Given(/^I am on external host "(.+)"/, function (url, callback) {
        this.browser.visitExternal(url).then(callback);
    });

    Given(/^I am on homepage$/, function (callback) {
        this.browser.visit('/').then(callback);
    });

    Given(/^I should be on "([^"]*)" page$/, function(expectedTitle, callback) {
        this.browser.assertTitle(expectedTitle).then(callback);
    });

    Then(/^take screenshot$/, function (callback) {
        this.browser.saveScreenshot('.screen.png').then(callback);
    });
});

Full example of this you can find in features folder of Generator of garden:

Fixtures

Usually we need fixtures in our applications to have some sandbox. This functionality available via modules. For example mongodb fixtures looks like this:

    //users.js
    exports.users = [
        { name: 'Gob' },
        { name: 'Buster' },
        { name: 'Steve Holt' }
    ];

and garden loads this in tests and in CLI.

./garden.js fixtures.load
./garden.js fixtures.drop

For now garden supports mongodb and mysql fixtures via modules. Feel free to develop new ones.

For more examples please take a look:

RESTFul API testing

When we develop web-service/micro-services we need to test RESTFul API. That is great ability to test api and have some user friendly specification for this. It looks like this one:

    # demo/get.feature

    Feature: Make a GET request
        In order to programmatically access
        As a Web Service User
        I need to have an ability to make a GET request and check response

        Scenario: Make a GET request to Fake Online REST API
          When I make GET request to "http://jsonplaceholder.typicode.com/posts/1"
          Then the status code should be 200
           And content type should be "application/json; charset=utf-8"
           And the JSON response should be:
           """
           {
             "userId": 1,
             "id": 1,
             "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
             "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
           }
           """

Modules

Full list of modules we will publish here (Modules)

Be Happy!

And cover you stuff with tests!

0.1.2

7 years ago

0.1.1

7 years ago

0.1.0

7 years ago

0.0.26

8 years ago

0.0.25

8 years ago

0.0.23

8 years ago

0.0.22

8 years ago

0.0.21

8 years ago

0.0.20

8 years ago

0.0.19

8 years ago

0.0.18

9 years ago

0.0.17

9 years ago

0.0.16

9 years ago

0.0.15

9 years ago

0.0.14

9 years ago

0.0.13

9 years ago

0.0.12

9 years ago

0.0.11

9 years ago

0.0.10

9 years ago

0.0.9

9 years ago

0.0.8

9 years ago

0.0.6

10 years ago

0.0.5

10 years ago

0.0.4

10 years ago

0.0.3

10 years ago

0.0.2

10 years ago

0.0.1

10 years ago