yui / grover

YUITest wrapper for PhantomJS

Home Page:http://yui.github.com/grover/lib/index.html

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

0.1.16 broke junit xml reporting with YUI when testing multiple files

Hamusutaa opened this issue · comments

Around 3 months ago, our automated build started having issues collecting test results. I've finally narrowed down the cause: A change to lib/process.js in 0.1.16 broke the way that results are passed to yuitest, which caused it to get confused and treat every testsuite after the first as a new root.

Before: (With coverage and superfluous tests stripped out)

[
    {
        "name": "mb-cta-link Test Suite",
        "passed": 5,
        "failed": 0,
        "errors": 0,
        "ignored": 0,
        "total": 5,
        "duration": 70,
        "type": "report",
        "MB Ads FE Call To Action Link": {
            "name": "MB Ads FE Call To Action Link",
            "passed": 5,
            "failed": 0,
            "errors": 0,
            "ignored": 0,
            "total": 5,
            "duration": 66,
            "type": "testcase",
            "test initializer": {
                "result": "pass",
                "message": "Test passed",
                "type": "test",
                "name": "test initializer",
                "duration": 4
            }
        },
        "timestamp": "Mon 21 Oct 2013 05:23:39 PM PDT",
        "coverage": {},
        "coverageType": "istanbul",
        "consoleInfo": []
    },
    {
        "name": "mb-base-widget Test Suite",
        "passed": 11,
        "failed": 0,
        "errors": 0,
        "ignored": 0,
        "total": 11,
        "duration": 148,
        "type": "report",
        "MB Ads FE Base Widget": {
            "name": "MB Ads FE Base Widget",
            "passed": 11,
            "failed": 0,
            "errors": 0,
            "ignored": 0,
            "total": 11,
            "duration": 145,
            "type": "testcase",
            "testInitializer": {
                "result": "pass",
                "message": "Test passed",
                "type": "test",
                "name": "testInitializer",
                "duration": 2
            }
        },
        "timestamp": "Mon 21 Oct 2013 05:23:40 PM PDT",
        "coverage": {},
        "coverageType": "istanbul",
        "consoleInfo": []
    }
]

After:

{
    "name": "mb-cta-link Test Suite",
    "passed": 10,
    "failed": 0,
    "errors": 0,
    "ignored": 0,
    "total": 10,
    "duration": 132,
    "type": "report",
    "MB Ads FE Call To Action Link": {
        "name": "MB Ads FE Call To Action Link",
        "passed": 5,
        "failed": 0,
        "errors": 0,
        "ignored": 0,
        "total": 5,
        "duration": 64,
        "type": "testcase",
        "test initializer": {
            "result": "pass",
            "message": "Test passed",
            "type": "test",
            "name": "test initializer",
            "duration": 4
        }
    },
    "timestamp": "Mon 21 Oct 2013 05:20:59 PM PDT",
    "coverage": {},
    "coverageType": "istanbul",
    "consoleInfo": [],
    "mb-base-widget Test Suite": {
        "name": "mb-base-widget Test Suite",
        "passed": 22,
        "failed": 0,
        "errors": 0,
        "ignored": 0,
        "total": 22,
        "duration": 292,
        "type": "report",
        "MB Ads FE Base Widget": {
            "name": "MB Ads FE Base Widget",
            "passed": 11,
            "failed": 0,
            "errors": 0,
            "ignored": 0,
            "total": 11,
            "duration": 144,
            "type": "testcase",
            "testInitializer": {
                "result": "pass",
                "message": "Test passed",
                "type": "test",
                "name": "testInitializer",
                "duration": 2
            }
        },
        "timestamp": "Mon 21 Oct 2013 05:20:59 PM PDT",
        "coverage": {},
        "coverageType": "istanbul",
        "consoleInfo": []
    }}

And what the result.xml looks like when it's broken:

<?xml version="1.0" encoding="UTF-8"?>
<testsuites>
    <testsuite name="MB Ads FE Call To Action Link" tests="1" failures="0" time="0.066">
        <testcase name="test initializer" time="0.004"></testcase>
    </testsuite>
    <testsuites>
        <testsuite name="MB Ads FE Base Widget" tests="1" failures="0" time="0.145">
            <testcase name="testInitializer" time="0.002"></testcase>
        </testsuite>
    </testsuites>
</testsuites>

In this case, our build would report only 1 test success, not 2, as the latter test suite is wrapped in a <testsuites> tag.

👍 There's a bug here indeed,

Same issue for our team.

👍 same issue