Skip to content

Latest commit

 

History

History
73 lines (43 loc) · 3.62 KB

CONTRIBUTING.md

File metadata and controls

73 lines (43 loc) · 3.62 KB

Issues

Pull requests

  • Create a new topic branch for every separate change you make.
  • Create a test case if you are fixing a bug or implementing an important feature.
  • Make sure the build runs successfully.

Development

Tools

We use the following tools for development:

Getting started

Install NodeJS.
Install globally grunt-cli using the following command:

$ npm install -g grunt-cli

Browse to the project root directory and install the dev dependencies:

$ npm install -d

To execute the build and tests run the following command in the root of the project:

$ grunt

You should see a green message in the console:

Done, without errors.

Tests

You can also run the tests in the browser.
Start a test server from the project root:

$ grunt connect:tests

This will automatically open the test suite at http://127.0.0.1:10000 in the default browser, with livereload enabled.

Note: we recommend cleaning all the browser cookies before running the tests, that can avoid false positive failures.

Automatic build

You can build automatically after a file change using the following command:

$ grunt watch

Integration with server-side

js-cookie-calibre allows integrating the encoding test suite with solutions written in other server-side languages. To integrate successfully, the server-side solution need to execute the test/encoding.html file in it's integration testing routine with a web automation tool, like Selenium. js-cookie-calibre test suite exposes an API to make this happen.

?integration_baseurl

Specify the base url to pass the cookies into the server through a query string. If integration_baseurl query is not present, then js-cookie-calibre will assume there's no server.

window.global_test_results

After the test suite has finished, js-cookie-calibre exposes the global window.global_test_results property containing an Object Literal that represents the QUnit's details. js-cookie-calibre also adds an additional property representing an Array containing the tests data.

Handling requests

When js-cookie-calibre encoding tests are executed, it will request a url in the server through an iframe representing each test being run. js-cookie-calibre expects the server to handle the input and return the proper Set-Cookie headers in the response. js-cookie-calibre will then read the response and verify if the encoding is consistent with js-cookie-calibre default encoding mechanism

js-cookie-calibre will send some requests to the server from the baseurl in the format /encoding?name=<cookie>, where <cookie> represents the cookie-name to be read from the request.

The server should handle those requests, internally parsing the cookie from the request and writing it again. It must set an application/json content type containing an object literal in the content body with name and value keys, each representing the cookie-name and cookie-value decoded by the server-side implementation.

If the server fails to respond with this specification in any request, the related QUnit test will fail. This is to make sure the server-side implementation will always be in sync with js-cookie-calibre encoding tests for maximum compatibility.