1.0.16 • Published 8 years ago

derby-casperjs v1.0.16

Weekly downloads
4
License
MIT
Repository
github
Last release
8 years ago

derby-casperjs

Helpers and tweaks for Casper.js to test Derby.js apps

Usage

# app/index.coffee

# app = require('derby').createApp 'foobar', __filename

window.app = app if window? # app must be accessible from the client
require('derby-casperjs/renderReady')(app)
# test/index.coffee

constants =
  baseUrl: 'http://localhost:3003'

{model, history, sel} = require('derby-casperjs')(casper, constants)

casper.waitForUrl

casper.waitForUrl(url[, cb, onTimeout, timeout])

Properly wait for derby to render page on client/server side.

casper.start constants.baseUrl, ->
  @waitForUrl '/', =>
    # On this stage derby fully loaded its client scripts and initialized everything
    @shot()

model

model.set, model.get

Evaluates set, get on the client. set's callback waits until operation is executed on the server.

casper.then ->
  userId = model.get '_session.userId'
  model.set "users.#{ userId }.casper", true, =>
    @shot()

model.wait()

Waits for all model operations to execute on the server

model.waitFor(path)

Waits for path to become truthy.

casper.then ->
  model.waitFor '_page.flags.finish', =>
    @shot()

history

history.push(path[, cb])

Does app.history.push on the client. If cb is provided also waits until the new page is loaded.

casper.then ->
  history.push '/games', =>
    # Games page is loaded and fully initialized
    @shot()

history.refresh()

Refresh the page using app.history.refresh on the client.

sel

sel.text([Css3Selector, ]text)

Returns an XPath selector to find a node which holds text. Optionally you can specify a CSS3 selector to narrow the lookup.

casper.then ->
  # Click on a `<button>` within `<form class='main'>` that has `Submit` text.
  @click sel.text('form.main button', 'Submit')

additional debugging features

Adds client debugging if you run tests with env var DEBUG=true:

DEBUG=true casperjs test ./test/index.js

casper.shot([name])

Make a screenshot and name it automatically with an incrementing number. Saves screenshots to test/screenshots/ - don't forget to add it to your .gitignore.

casper.then ->
  @shot() # test/screenshots/1.png
  @shot() # test/screenshots/2.png
  @shot() # test/screenshots/3.png
  @shot 'foobar' # test/screenshots/foobar.png
1.0.16

8 years ago

1.0.15

8 years ago

1.0.14

8 years ago

1.0.13

8 years ago

1.0.11

9 years ago

1.0.10

9 years ago

1.0.9

9 years ago

1.0.8

9 years ago

1.0.7

9 years ago

1.0.6

9 years ago

1.0.5

9 years ago

1.0.4

9 years ago

1.0.3

9 years ago

1.0.2

9 years ago

1.0.1

9 years ago