Cornipickle is an automated testing tool that can verify declarative properties on-the-fly as a user interacts with an application. Test oracles are written in a a declarative language that can express desirable properties of a web application as a set of human-readable assertions on the page's HTML and CSS data.
First make sure you have a docker installed.
Build:
docker build . --tag cornipickle
Run
docker run -it -p10101:10101 cornipickle
First make sure you have the following installed:
To use Cornipickle, the easiest way is to download a pre-compiled release from the Releases page.
If you want to build Cornipickle by yourself, first make sure you have the following installed:
Download the sources for Cornipickle from GitHub or clone the repository using Git:
git@github.com:liflab/cornipickle.git
The project requires the following libraries to be present in the system:
Using Ant, you can automatically download any libraries missing from your system by typing:
ant download-deps
This will put the missing JAR files in the dep
folder in the project's
Server
folder.
Compile the sources by simply typing:
ant
This will produce a file called cornipickle.jar
in the folder. This file
is runnable and stand-alone, or can be used as a library, so it can be moved
around to the location of your choice.
In addition, the script generates in the doc
folder the Javadoc
documentation for using Cornipickle.
Cornipickle can test itself by running:
ant test
Unit tests are run with jUnit; a detailed report of
these tests in HTML format is availble in the folder tests/junit
, which
is automatically created. Code coverage is also computed with
JaCoCo; a detailed report is available
in the folder tests/coverage
.
Cornipickle works as a server. You start it on the command line with:
java -jar cornipickle.jar [options] [file1 [file2 ...]]
where file1
, file2
, etc. are optional filenames containing Cornipickle
specifications that the server can pre-load. Available options are:
-h
, --help
: Display command line usage
-p
,--port <x>
: Listen on port x (default: 10101)
-s
,--servername <x>
: Set server name or IP address x (default: localhost)
--serve-as <path>
: Serve local folder as remote folder --serve-as myfolder/
(note the
trailing slash), the URL http://localhost:10101/myfolder/foo.bar
will
refer to foo.bar
from the local folder where Cornipickle is launched.
This also works for nested folders.
Cornipickle uses Ajax to relay information between the browser and its interpreter. If you want to use Cornipickle to test an application hosted on your server, you need to enable Cross-origin resource sharing (CORS) on the server that hosts your site.
Suppose that:
myserver.com
, running on a server that
listens to port 80
;myserver.com
, listening to port
10101
(it cannot be set to the same port as your web server). Normally, as per the Same-Origin Policy (SOP), a page served from
myserver.com:80
is forbidden to send an Ajax request to
myserver.com:10101
--meaning that the web site will not be able to relay
data to Cornipickle. To enable CORS on the server, please refer to this
page: https://enable-cors.org/server.html. For example, on Apache, you must add
the following line to the server's .htaccess
configuration file:
Header set Access-Control-Allow-Origin "http://myserver.com:10101"
Cornipickle contains a few examples. Using the default settings, you can try these examples by starting the server and visiting http://localhost:10101/examples/index.html in your browser.
You can have more detailed status on the specifications that Cornipickle is watching through a simple web interface. Using the default settings, you can try these examples by starting the server and visiting http://localhost:10101/status in your browser. Refresh the page to get updated info.
More online documentation about Cornipickle is under way. In the meantime, please refer to Cornipickle's page on the LIF's website for references to presentation slides and research papers detailing how the tool works and how to use the language.
Please feel free to contact us if you have any questions, or if you want to use Cornipickle in a specific context.
Cornipickle was first written by Sylvain Hallé, associate professor at Université du Québec à Chicoutimi, Canada, and head of the Laboratoire d'informatique formelle. Special thanks to the team of of graduate and undergraduate students who contributed to the development of Cornipickle: