Selenium IDE

The Selenium IDE is an "Open source record and playback test automation for the web". Extension in the browser for recording, and there's a selenium-side-runner script to run the scripts locally against various browsers.

Library

Learnings

Flow Control

Holy cats, Selenium has flow control now? If-else-end? Goto? Do/While? AWESOME.

Matching via RegExp

There's no current capability to check for Regular Expressions built into the app.

Case: Looking for Your receipt number is ADFSADSf1341234 and you receipt will be emailed to you shortly.

Option 1: verifyElementPresent + xPath

{
    "id": "6a13fc8d-a354-4464-90d2-5a0f9ec35452",
    "comment": "",
    "command": "verifyElementPresent",
    "target": "xpath=//div/div/*[contains(.,'Your receipt number is')]",
    "targets": [],
    "value": ""
}, {
    "id": "6a13fc8d-a354-4464-90d2-5a0f9ec35453",
    "comment": "",
    "command": "verifyElementPresent",
    "target": "xpath=//div/div/*[contains(.,'and your receipt will be emailed to you shortly')]",
    "targets": [],
    "value": ""
}

Verdict: Finds sections of pure text. No real regexp matching.

Option 2: ExecuteScript

{
    "id": "8d114026-f2b6-4d53-81e4-5eff16051bd6",
    "comment": "",
    "command": "if",
    "target": "document.evaluate(\"//div/div/div/p[contains(., 'Your receipt number is')]\", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.innerText.match(/Your receipt number is [a-zA-Z0-9]+ and your receipt will be emailed to you shortly/) == null",
    "targets": [],
    "value": ""
}, {
    "id": "ccddf9c7-2045-472f-abac-553d8c92bb1c",
    "comment": "",
    "command": "throwError",
    "target": "Nope",
    "targets": [],
    "value": ""
}, {
    "id": "aaa85efd-8010-4e7f-8fa6-0aa52db6bf8b",
    "comment": "",
    "command": "end",
    "target": "",
    "targets": [],
    "value": ""
}

Verdict: This does true Regex matching, but you need to be sure the XPath will hit exactly the right node to RegExp (ie. you're not finding a node that matches a RegExp, you're finding a node then verifying it matches a regexp).