Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

turtle

Package Overview
Dependencies
Maintainers
6
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

turtle

Carries your UI tests in a chrome headless browser

  • 0.6.1
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
132
increased by2540%
Maintainers
6
Weekly downloads
 
Created
Source

What it is

Turtles handles server start/shutdown and client side test in a headless browser (mocha-headless-chrome).

This module is still work in progress.

Requirements

  • run client code in a browser (or a simulated one) & tests independent of node.js context
  • have client and server run in different contexts
  • Have 2 clients run in different contexts

Usage

Allows to start multiple servers, multiple clients, with multiple templates (optional).

  var Turtle = require('turtle');

  var turtle = new Turtle(8686);

  turtle.server({
    path: __dirname + '/server/always_ok_server.js',
    args: ['--port', '4200'],
    started: /^Server started/img
  });

  turtle.template({
    name: 'myJQueryTemplate',
    scripts: [
      __dirname + '/lib/jQuery.js'
    ]
  });

  turtle.client({
      name: 'client1',
      template: 'myJQueryTemplate'
    }).
    test({
      path: __dirname + "/client",
      filter: /\.test1\.client\.js$/im
    });

  turtle.client({
      name: 'client2',
      template: 'myJQueryTemplate'
    }).
    test({
      path: __dirname + "/client/global_variable.test2.client.js"
    });

  turtle.run();

Turtle([port])

This is the main test runner. It serves the test files on the port given in parameter. Default is 8686.

turtle.server(options)

parameters
options:Object
  • path:String the file path of the node.js server entry point.
  • cmd:String (optional) the command used to start the server. Default is node
  • args:Array a list of arguments to pass to the child process. The format is the same as arguments in childProcess.spawn()
  • log:Object
    • prefix:String prefix the server logs with this string
    • silent:Boolean do not show the server logs in stdout or stderr

turtle.client(options)

parameters
  • options.template:String the name of the template to use for this client. Templates are declared for each turtle instance
  • options.name:String a name for this client. the client will be available at the url /client/

Creates and returns the new client for chaining.

A Client is an instance of headless browser. There is always one default client. Each client is started in a forked process. They are independent and there is no guaranty that they will run at exactly the same time.

turtle.template(options)

A template is a HTML wrapper that embeds tests. It should include all the javascript libraries that are needed by the tests.

In the background, turtle will generate the test file in the tmp directory of your OS. This file is automatically deleted when turtle is done.

Templates are tied to a client. If you define only one template, every client will use the same template but you could declare a different template for each client.

Turtle automatically embeds mocha and uses the 'bdd' test format.

parameters
definition:Object
  • name: A name for this template
  • css: any CSS script to embed in the template. The order may matter and will be respected by turtle
  • scripts: any JS script to embed in the template. The order may matter and will be respected by turtle
override:String

The name of a template to override. Any file added will be appended to the already defined ones.

example
  turtle.template({
    name: 'templateName',
    css: [
      'maybe/a/path/to/mocha.css'
    ],
    scripts: [
      '../path/to/my/included/library.js',
      './another/path/to/another/lib.js'
    ]
  })

Then the override:

  turtle.template({
    name: 'overridenTemplateName',
    override: 'templateName',
    scripts: [
      './another/path/to/another/lib.js'
    ]
  })

turtle.stayUpWhenDone()

Keep the turtle file server running after the tests are done.

turtle.export(module)

Exports itself to the module passed in parameter. It allows to reuse templates and server definitions. See the tests for an example.

turtle.run([callback])

Effectively run the tests.

parameters
callback (optional)

The callback takes one argument which is an exit code. If zero, all tests are successful. If different than zero, at least one of the tests failed.

When no callback is defined the process will exit with an exit code different than zero if there is a test failure.

Client

client.test(options)

Add one or several tests to the current client.

parameters
options:Object
  • path:String directory or filename
  • match:RegExp a regular expression against which file names are tested. Matching files are included.

Do not delete the html test files after the tests have ended. Using this will output the path of the test files in the console.

Migration to the new turtle

0.3.0

  • change turtle.client('templateName') to turtle.client({template: 'templateName'})

TODO

  • Support for multiple servers, more tests

Copyright 2013, Zendesk Inc. Licensed under the Apache License Version 2.0, http://www.apache.org/licenses/LICENSE-2.0

Keywords

FAQs

Package last updated on 15 Nov 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc