FuncUnit is is comprised of the following parts:
- Selenium - Provides browser automation
- QUnit - A browser-based testing an assertion API.
- jQuery - Used for CSS selector and DOM utilities.
- EnvJS - A simulated browser environment.
- A synthetic event library.
FuncUnit supports 2 modes: Browser and Selenium mode.
Browser mode is when you open up your browser to a funcunit html page. This page includes the funcunit script which has inside it QUnit, jQuery, Syn and the FuncUnit API.
When you use FuncUnit (or S), it basically sends those commands to a popup window. This is pretty straightforward.
Selenium mode is used when you use envjs to open the funcunit html page. Here, EnvJS reads the html page and then loads and runs any script tags it finds (just like a normal browser). But instead of sending commands to a popup window, funcunit.js starts selenium, serializes those commands, and send them to a custom Selenium server build. The selenium server has jQuery and Syn and will run the commands the same way browser mode ran the commands. Selenium server will return the results to FuncUnit which reports them to the console.
Now that you know the secret to FuncUnit's awesomeness - how you are able to write a test with just a browser and funcunit.js, but automatically run it - please help us make this project even better. Here are some things we want to work on:
- An in-browser Selenium like IDE.
- Cucumber-like API.
- Plugins for testing Flash / Silverlight integration.