Giter Club home page Giter Club logo

specular's Introduction

Specular
========

spec·u·lar  /ˈspekyələr/
Adjective:  Of, relating to, or having the properties of a mirror.

Description
-----------

Specular is a suite of tools and libraries used for
cross-(browser|platform) testing of ARIA implementations in user
agents. Specular currently consists of the following components that
may be distributed seperately for ease of use:

1. Speclenium Server (speclenium_server.py)
Speclenium is a server that runs along-side Selenium Server to provide
accessibility API assertions during a Selenium automated
tests. Typically when Speclenium Server is launched, it will start an
instance of Selenium Server (formerly known as Selenium-RC). 

All test target machines need to have Speclenium Server running on 
them. Either pass it the Selenium Server's jar to launch with, or
launch Selenium Server yourself and --no-selenium.
Here is an example command line used to launch Speclenium Server:
$ python speclenium-server.py -S path-to-selenium-server.jar

2. Speclenium Client (speclenium_server.py)
The client commnicates with Speclenium Server over port 4117 to 
control the tests. There's no need to launch it separately, as the 
tests will do that.

3. PyUnit Test Suite (run_tests.py)
Selenium Server allows tests to be driven accross machine boundaries by
almost any standard unit testing framework, in any language. The test
suite bundled with Specular is written in Python, and tests for ARIA
conformance across browsers. The test suite too could be distributed 
seperately.

The tests can be found in the “tests” subdirectory. The “run_tests.py” 
script is an easy harness that allows running the test with any 
combination of tests and of browsers defined in “settings.ini”. Run 
with “–help” to see range of options.

4. API delta tool (quick_diff.py)
This allows pointing two browsers at a URL, and spotting the 
differences in their accessible object hierarchies. It uses the same 
“settings.ini” to provide remote (or local) hosts and their installed 
browsers. It also allows saving a hierarchy to file for later comparison 
with different browsers or builds. The delta could be viewed either by 
a list of changes, or by a browser viewable XML file (put the output XML 
file in “viewdiff” for that to work). This tool is still in early stages 
of development, so the tree size it can handle is fairly limited, don’t 
point it at GMail just yet!

Visual Overview of Architecture
-------------------------------

run_tests or quick_diff  (launch second)
     |          |
  Speclenium Client
          |
      [port 4117]
          |
   Speclenium Server (launch first) 
          |
      [port 4444]
          |
    Selenium Server

Quick Start
-----------

These steps work if you're running everything on the same computer:

1. Install Selenium Server (yes, it's just a JAR file)
2. python speclenium-server.py -S path-to-selenium-server.jar
3. Check http://localhost:4444/wd/hub/status to see if it's running.
   You should get a JSON status back
4. Edit settings.ini -- the default settings.ini just runs Firefox and 
   Chrome on Windows. See all-browsers.ini for more examples.
5. python ./run_tests.py   or    python ./quick_diff.py
6. Quit Speclenium Server via Ctrl+C in the console it's running in.

Building Distribution Packages
------------------------------

The whole of Specular is developed in one repository and it's source
is distributed as one monolithic collection of the components
above. Nonetheless, the individual components could be packaged
seperately, and include some basic dependancies to ease
installation. The following setup.py commands should work:

1. speclenium_dist
This prepares an archive with the library and script needed to start a
Speclenium server. A Selenium Server JAR file will be bundled with this
package, and Speclenium will launch Selenium Server at startup.

2. speclenium_dist_win32
This prepares an executable of Speclenium for Windows. All
dependancies are included in this package, even Python.

3. tests_dist
This prepares an archive of PyUnit tests and a harness called
'run_tests'. This distribution will bundle selenium.py, which is an
external module from the Selenium project.

Project Status
--------------
As of February 2, 2012, Aaron Leventhal is working to revitalize the 
project. So far ./run-tests has been able to run through Firefox, but
produces many failures.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.