Skip to content

Red Glass works alongside Selenium to observe browser events, and provides an interactive log which illustrates changes to the DOM during an automation session.

Notifications You must be signed in to change notification settings

fohara/red-glass

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

51 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RedGlass

RedGlass works alongside Selenium to observe browser events, and provides an interactive log which illustrates changes to the DOM during an automation session. It can be used as a diagnostic tool for writing tests which involve complex browser events and interactions.

Single Page Usage

To use RedGlass on a single page, simply pass it the driver instance. RedGlass will not be activated for subsequent page loads.

driver = Selenium::WebDriver.for :firefox
red_glass = RedGlass.new(driver, { server_log: true })

driver.get "http://google.com"
red_glass.start

driver.find_element(:name, 'q').send_keys 'a'

# Now open http://localhost:4567 in a modern browser to view the event log.

Multi-page Usage

For multi-page usage, you must pass an instance of RedGlassListener to both the driver and RedGlass. RedGlass will then be activated for each subsequent page load.

listener = RedGlassListener.new
driver = Selenium::WebDriver.for :firefox, :listener => listener
red_glass = RedGlass.new driver, {listener: listener}

driver.navigate.to "http://google.com"
red_glass.start
driver.navigate.to "http://news.google.com"

# RedGlass is activated for both pages.

Snapshot

The snapshot method captures the current state of the page and writes it to the file system (in a directory you specify). You can then use this data to assist with subsequent analysis such as cross-browser consistency testing. A snapshot consists of an archive containing several files:

  • screenshot.png : A full page screenshot of the web page.
  • source.html : The HTML source of the web page in its current state. This will include elements that were dynamically added via DOM manipulation.
  • dom.json : A serialized representation of the DOM as a JSON object. Each element contains a small subset of attributes that are relevant to layout analysis.
  • metadata.json : Metadata about the page and browser.

To use the snapshot method, you must initialize RedGlass with an archive location option. It is also recommended that you provide a test id option, otherwise a random name will be used for the parent archive directory.

listener = RedGlassListener.new
driver = Selenium::WebDriver.for :firefox, :listener => listener
red_glass = RedGlass.new driver, {listener: listener, archive_location: /Users/you/test_data’, test_id: 1}

driver.navigate.to "http://google.com"
red_glass.take_snapshot

# There will now be a page archive available at ‘/Users/you/test_data/1’.

Event Types

RedGlass logs the following types of events:

  • click
  • keydown
  • keyup
  • DOMNodeInserted
  • DOMNodeRemoved
  • xhr (onreadystatechange)
  • errors (onerror)

How it Works

RedGlass loads a javascript application into your browser session which listens for the event types listed above. When one of those events is fired, the event data is posted to a local server which temporarily persists the data in memory. The data is then served through a Web Socket initiated by the client UI. Just open http://localhost:4567 in a modern browser to view the event log. Since there is no persistent data store, the event data is lost as soon as it is removed from memory (page refresh, server restart, etc). This is by design, as RedGlass is intended to be used as an aide for writing complex UI tests, and not necessarily as a persistent log.

License

The MIT License - Copyright (c) 2014 Frank O'Hara

About

Red Glass works alongside Selenium to observe browser events, and provides an interactive log which illustrates changes to the DOM during an automation session.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published