Changeset 189226 in webkit


Ignore:
Timestamp:
Sep 1, 2015 2:00:19 PM (9 years ago)
Author:
BJ Burg
Message:

Web Inspector: rewrite inspector/console/command-line-api.html to use AsyncTestSuite
https://bugs.webkit.org/show_bug.cgi?id=148637

Reviewed by Darin Adler.

Source/WebInspectorUI:

  • UserInterface/Base/Object.js:

(WebInspector.Object.singleFireEventListener):
(WebInspector.Object.singleFireEventListener.let.wrappedCallback): Arrow.

LayoutTests:

  • inspector/console/command-line-api-expected.txt:
  • inspector/console/command-line-api.html:
Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r189225 r189226  
     12015-09-01  Brian Burg  <bburg@apple.com>
     2
     3        Web Inspector: rewrite inspector/console/command-line-api.html to use AsyncTestSuite
     4        https://bugs.webkit.org/show_bug.cgi?id=148637
     5
     6        Reviewed by Darin Adler.
     7
     8        * inspector/console/command-line-api-expected.txt:
     9        * inspector/console/command-line-api.html:
     10
    1112015-09-01  Chris Dumez  <cdumez@apple.com>
    212
  • trunk/LayoutTests/inspector/console/command-line-api-expected.txt

    r186891 r189226  
    33
    44
    5 STEP: String(keys([3,4]))
    6 0,1
     5== Running test suite: Console.TestCommandLineAPI
     6-- Running test case: EvaluateArrayKeys
     7Input: keys([3,4])
     8Output: 0,1
    79
    8 STEP: String(values([3,4]))
    9 3,4
     10-- Running test case: EvaluateArrayValues
     11Input: values([3,4])
     12Output: 3,4
    1013
    11 STEP: String($0)
    12 [object HTMLParagraphElement]
     14-- Running test case: EvaluateDollarZero
     15Input: $0
     16Output: undefined
    1317
    14 STEP: String($('foo'))
    15 CONSOLE: The console function $() has changed from $=getElementById(id) to $=querySelector(selector). You might try $("#%s")
    16 null
     18-- Running test case: EvaluateInvalidSelector
     19Input: $('foo')
     20Output: null
    1721
    18 STEP: String($('#foo'))
    19 [object HTMLParagraphElement]
     22-- Running test case: EvaluateIdSelector
     23Input: $('#foo')
     24Output: [object HTMLParagraphElement]
    2025
    21 STEP: String($('#foo', document.body))
    22 [object HTMLParagraphElement]
     26-- Running test case: EvaluateIdSelectorWithContext
     27Input: $('#foo', document.body)
     28Output: [object HTMLParagraphElement]
    2329
    24 STEP: String($('#foo', 'non-node'))
    25 [object HTMLParagraphElement]
     30-- Running test case: EvaluateIdSelectorWithInvalidContext
     31Input: $('#foo', 'non-node')
     32Output: [object HTMLParagraphElement]
    2633
    27 STEP: String($('#foo', $('#bar')))
    28 null
     34-- Running test case: EvaluateIdSelectorDynamicContext
     35Input: $('#foo', $('#bar'))
     36Output: null
    2937
    30 STEP: String($$('p'))
    31 [object HTMLParagraphElement],[object HTMLParagraphElement]
     38-- Running test case: EvaluateElementSelectorAll
     39Input: $$('p')
     40Output: [object HTMLParagraphElement],[object HTMLParagraphElement]
    3241
    33 STEP: String($$('p', document.body))
    34 [object HTMLParagraphElement],[object HTMLParagraphElement]
     42-- Running test case: EvaluateElementSelectorAllWithContext
     43Input: $$('p', document.body)
     44Output: [object HTMLParagraphElement],[object HTMLParagraphElement]
    3545
  • trunk/LayoutTests/inspector/console/command-line-api.html

    r188059 r189226  
    66function test()
    77{
    8     var currentStepIndex = 0;
    9     var steps = [
    10         "String(keys([3,4]))",
    11         "String(values([3,4]))",
    12         "String($0)",
    13         "String($('foo'))",
    14         "String($('#foo'))",
    15         "String($('#foo', document.body))",
    16         "String($('#foo', 'non-node'))",
    17         "String($('#foo', $('#bar')))",
    18         "String($$('p'))",
    19         "String($$('p', document.body))",
     8    // Each input is wrapped in the String constructor to force stringification.
     9    let testInputs = [
     10        {
     11            title: "ArrayKeys",
     12            input: "keys([3,4])",
     13        },
     14        {
     15            title: "ArrayValues",
     16            input: "values([3,4])",
     17        },
     18        {
     19            title: "DollarZero",
     20            input: "$0",
     21            setup: selectElementForDollarZero,
     22        },
     23        {
     24            title: "InvalidSelector",
     25            input: "$('foo')",
     26            setup: listenForConsoleWarning,
     27        },
     28        {
     29            title: "IdSelector",
     30            input: "$('#foo')",
     31        },
     32        {
     33            title: "IdSelectorWithContext",
     34            input: "$('#foo', document.body)",
     35        },
     36        {
     37            title: "IdSelectorWithInvalidContext",
     38            input: "$('#foo', 'non-node')",
     39        },
     40        {
     41            title: "IdSelectorDynamicContext",
     42            input: "$('#foo', $('#bar'))",
     43        },
     44        {
     45            title: "ElementSelectorAll",
     46            input: "$$('p')",
     47        },
     48        {
     49            title: "ElementSelectorAllWithContext",
     50            input: "$$('p', document.body)",
     51        },
    2052    ];
    2153
    22     var consoleMessage = null;
     54    let suite = InspectorTest.createAsyncSuite("Console.TestCommandLineAPI");
    2355
    24     function runSteps()
    25     {
    26         for (var step of steps) {
    27             WebInspector.runtimeManager.evaluateInInspectedWindow(step, "test", true, true, false, false, false, function(result, wasThrown) {
    28                 InspectorTest.log("\nSTEP: " + steps[currentStepIndex]);
    29                 if (consoleMessage) {
    30                     InspectorTest.log("CONSOLE: " + consoleMessage.messageText);
    31                     consoleMessage = null;
     56    function addAPITestCase(args) {
     57        let {title, input, setup} = args;
     58        suite.addTestCase({
     59            name: `Evaluate${title}`,
     60            setup,
     61            test: (resolve, reject) => {
     62                InspectorTest.log(`Input: ${input}`);
     63
     64                function callback(result, wasThrown) {
     65                    if (result) {
     66                        InspectorTest.log(`Output: ${result.description}`);
     67                        resolve();
     68                    } else
     69                        reject();
    3270                }
    33                 InspectorTest.log(result.description);
    3471
    35                 if (++currentStepIndex >= steps.length)
    36                     InspectorTest.completeTest();
    37             });
    38         }
     72                const objectGroup = "test";
     73                const includeCommandLineAPI = true;
     74                const ignorePauseOnExceptionsAndMute = false;
     75                const shouldReturnByValue = false;
     76                const shouldGeneratePreview = false;
     77                const shouldSaveResult = false;
     78                WebInspector.runtimeManager.evaluateInInspectedWindow(`String(${input})`, objectGroup, includeCommandLineAPI, ignorePauseOnExceptionsAndMute, shouldReturnByValue, shouldGeneratePreview, shouldSaveResult, callback);
     79            }
     80        })
    3981    }
    4082
    41     // Detect console warning for $('foo').
    42     WebInspector.logManager.addEventListener(WebInspector.LogManager.Event.MessageAdded, function(event) {
    43         consoleMessage = event.data.message;
    44         InspectorTest.assert(consoleMessage instanceof WebInspector.ConsoleMessage);
    45     });
     83    for (let input of testInputs)
     84        addAPITestCase(input);
    4685
    47     // Select div#foo for $0.
    48     WebInspector.domTreeManager.requestDocument(function(documentNode) {
    49         WebInspector.domTreeManager.querySelector(documentNode.id, "#foo", function(contentNodeId) {
    50             if (contentNodeId) {
     86    suite.runTestCasesAndFinish();
     87
     88    function listenForConsoleWarning(resolve, reject) {
     89        // Detect console warning for $('foo').
     90        WebInspector.logManager.singleFireEventListener(WebInspector.LogManager.Event.MessageAdded, (event) => {
     91            let message = event.data.message;
     92            InspectorTest.assert(message instanceof WebInspector.ConsoleMessage);
     93            InspectorTest.log(`CONSOLE: ${message.messageText}`);
     94        });
     95
     96        resolve();
     97    }
     98
     99    function selectElementForDollarZero(resolve, reject) {
     100        WebInspector.domTreeManager.requestDocument(function(documentNode) {
     101            if (!documentNode) {
     102                InspectorTest.log("FAIL: DOM node not found.");
     103                return reject();
     104            }
     105
     106            // Select div#foo for $0.
     107            WebInspector.domTreeManager.querySelector(documentNode.id, "#foo", function(contentNodeId) {
     108                if (!contentNodeId) {
     109                    InspectorTest.log("FAIL: DOM node not found.");
     110                    return reject();
     111                }
     112
    51113                ConsoleAgent.addInspectedNode(contentNodeId);
    52                 runSteps();
    53             } else {
    54                 InspectorTest.log("FAIL: DOM node not found.");
    55                 InspectorTest.completeTest();
    56             }
     114                resolve();
     115            });
    57116        });
    58     });
     117    }
    59118}
    60119</script>
  • trunk/Source/WebInspectorUI/ChangeLog

    r189220 r189226  
     12015-09-01  Brian Burg  <bburg@apple.com>
     2
     3        Web Inspector: rewrite inspector/console/command-line-api.html to use AsyncTestSuite
     4        https://bugs.webkit.org/show_bug.cgi?id=148637
     5
     6        Reviewed by Darin Adler.
     7
     8        * UserInterface/Base/Object.js:
     9        (WebInspector.Object.singleFireEventListener):
     10        (WebInspector.Object.singleFireEventListener.let.wrappedCallback): Arrow.
     11
    1122015-09-01  Devin Rousso  <drousso@apple.com>
    213
  • trunk/Source/WebInspectorUI/UserInterface/Base/Object.js

    r189104 r189226  
    5858    static singleFireEventListener(eventType, listener, thisObject)
    5959    {
    60         let wrappedCallback = function() {
     60        let wrappedCallback = () => {
    6161            this.removeEventListener(eventType, wrappedCallback, null);
    6262            listener.apply(thisObject, arguments);
    63         }.bind(this);
     63        };
    6464
    6565        this.addEventListener(eventType, wrappedCallback, null);
Note: See TracChangeset for help on using the changeset viewer.