summaryrefslogtreecommitdiff
path: root/tests/test_tools/selenium/core/scripts/se2html.js
blob: 67054a49de7c82025c7294ec02e91971712c80c4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
/*

This is an experiment in creating a "selenese" parser that drastically
cuts down on the line noise associated with writing tests in HTML.

The 'parse' function will accept the follow sample commands.

test-cases:
    //comment
    command "param"
    command "param" // comment
    command "param" "param2"
    command "param" "param2" // this is a comment

TODO: 
1) Deal with multiline parameters
2) Escape quotes properly
3) Determine whether this should/will become the "preferred" syntax 
   for delivered Selenium self-test scripts
*/    


function separse(doc) {
    // Get object
    script = doc.getElementById('testcase')
    // Split into lines
    lines = script.text.split('\n');


    var command_pattern = / *(\w+) *"([^"]*)" *(?:"([^"]*)"){0,1}(?: *(\/\/ *.+))*/i;
    var comment_pattern = /^ *(\/\/ *.+)/

    // Regex each line into selenium command and convert into table row.
    // eg. "<command> <quote> <quote> <comment>"
    var new_test_source = '';
    var new_line        = '';
    for (var x=0; x < lines.length; x++) {
        result = lines[x].match(command_pattern);
        if (result != null) {
            new_line = "<tr><td>" + (result[1] || '&nbsp;') + "</td>" +
                           "<td>" + (result[2] || '&nbsp;') + "</td>" +
                           "<td>" + (result[3] || '&nbsp;') + "</td>" +
                           "<td>" + (result[4] || '&nbsp;') + "</td></tr>\n";
            new_test_source += new_line;
        }
        result = lines[x].match(comment_pattern);
        if (result != null) {
            new_line = '<tr><td rowspan="1" colspan="4">' +
                       (result[1] || '&nbsp;') +
                       '</td></tr>';
            new_test_source += new_line;
        }
    }

    // Create HTML Table        
    body = doc.body
    body.innerHTML += "<table class='selenium' id='testtable'>"+
                      new_test_source +
                      "</table>";

}