Page MenuHomePhabricator

Make qunit test failures contain useful and readable information about where does it come from, how did you get there, etc
Closed, DeclinedPublic

Description

Qunit test failures, perhaps not always but often enough, are a completely unreadable mess. We should take some examples from phpunit on how to display errors in a way that helps the developer rather than confuses them.

Died on test #1 @http://localhost:8080/w/load.php?debug=false&lang=en&modules=Base64.js%7Ceasy-deflate.core%2Cdeflate%7Cext.echo.base%2Coverlay%7Cext.echo.overlay.tests%7Cext.eventLogging%2Cflow%2Cmantle%2Cpopups%7Cext.eventLogging.tests%7Cext.flow.components%2Ceditor%2Cparsoid%2Cpreview%2Ctemplating%2Ctests%7Cext.flow.components.tests%7Cext.flow.jquery.conditionalScroll%2CfindWithParent%7Cext.flow.vendor.storer%7Cext.mantle.modules%2Coo%2Cviews%7Cext.mantle.oo.tests%7Cext.mantle.views.tests%7Cext.popups.tests%7Cext.templateData.test%7Cext.templateDataGenerator.data%7Cext.uls.tests%7Cext.visualEditor.base%2Ccore%2Cexperimental%2Clanguage%2Cmediawiki%2Cmwalienextension%2Cmwcore%2Cmwformatting%2Cmwgallery%2Cmwimage%2Cmwlink%2Cmwmeta%2Cmwreference%2Cmwtransclusion%2Cstandalone%2CtargetLoader%2Ctest%2CviewPageTarget%7Cext.visualEditor.core.desktop%7Cext.visualEditor.mwimage.core%7Cext.visualEditor.mwreference.core%7Cext.visualEditor.mwtransclusion.core%7Cext.wikiEditor.toolbar.test%7Cjquery.async%2CautoEllipsis%2CbyteLimit%2CcheckboxShiftClick%2Ccolor%2CcolorUtil%2CgetAttrs%2Chidpi%2ChighlightText%2Ci18n%2CjStorage%2Clocalize%2CmakeCollapsible%2Cmw-jump%2Cplaceholder%2Ctablesorter%2CtextSelection%2Culs%7Cjquery.uls.data%2Cgrid%7Cmediawiki.api.category%2Coptions%2Cparse%2Cwatch%7Cmediawiki.cookie%2CmessagePoster%2Cspecial%2Ctemplate%2Ctoc%7Cmediawiki.language.months%2Cnames%2CspecialCharacters%7Cmediawiki.page.ready%7Cmediawiki.skinning.content.parsoid%7Cmediawiki.special.recentchanges%7Cmediawiki.template.handlebars%7Cmediawiki.ui.anchor%7Cmoment%2Coojs%2Coojs-ui%2Cpapaparse%2Crangefix%2Cunicodejs%7Coojs-ui.styles%7Coojs-ui.styles.icons-editing-core%7Cschema.Popups%7Ctest.mediawiki.qunit.suites%2Ctestrunner%7Ctest.sinonjs&skin=vector&version=20150511T044816Z&*:283:248 @http://localhost:8080/w/load.php?debug=false&lang=en&modules=Base64.js%7Ceasy-deflate.core%2Cdeflate%7Cext.echo.base%2Coverlay%7Cext.echo.overlay.tests%7Cext.eventLogging%2Cflow%2Cmantle%2Cpopups%7Cext.eventLogging.tests%7Cext.flow.components%2Ceditor%2Cparsoid%2Cpreview%2Ctemplating%2Ctests%7Cext.flow.components.tests%7Cext.flow.jquery.conditionalScroll%2CfindWithParent%7Cext.flow.vendor.storer%7Cext.mantle.modules%2Coo%2Cviews%7Cext.mantle.oo.tests%7Cext.mantle.views.tests%7Cext.popups.tests%7Cext.templateData.test%7Cext.templateDataGenerator.data%7Cext.uls.tests%7Cext.visualEditor.base%2Ccore%2Cexperimental%2Clanguage%2Cmediawiki%2Cmwalienextension%2Cmwcore%2Cmwformatting%2Cmwgallery%2Cmwimage%2Cmwlink%2Cmwmeta%2Cmwreference%2Cmwtransclusion%2Cstandalone%2CtargetLoader%2Ctest%2CviewPageTarget%7Cext.visualEditor.core.desktop%7Cext.visualEditor.mwimage.core%7Cext.visualEditor.mwreference.core%7Cext.visualEditor.mwtransclusion.core%7Cext.wikiEditor.toolbar.test%7Cjquery.async%2CautoEllipsis%2CbyteLimit%2CcheckboxShiftClick%2Ccolor%2CcolorUtil%2CgetAttrs%2Chidpi%2ChighlightText%2Ci18n%2CjStorage%2Clocalize%2CmakeCollapsible%2Cmw-jump%2Cplaceholder%2Ctablesorter%2CtextSelection%2Culs%7Cjquery.uls.data%2Cgrid%7Cmediawiki.api.category%2Coptions%2Cparse%2Cwatch%7Cmediawiki.cookie%2CmessagePoster%2Cspecial%2Ctemplate%2Ctoc%7Cmediawiki.language.months%2Cnames%2CspecialCharacters%7Cmediawiki.page.ready%7Cmediawiki.skinning.content.parsoid%7Cmediawiki.special.recentchanges%7Cmediawiki.template.handlebars%7Cmediawiki.ui.anchor%7Cmoment%2Coojs%2Coojs-ui%2Cpapaparse%2Crangefix%2Cunicodejs%7Coojs-ui.styles%7Coojs-ui.styles.icons-editing-core%7Cschema.Popups%7Ctest.mediawiki.qunit.suites%2Ctestrunner%7Ctest.sinonjs&skin=vector&version=20150511T044816Z&*:281:1 runScript@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:160:591 execute@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:161:908 handlePending@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:159:131 runScript@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:160:603 execute@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:161:908 handlePending@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:159:131 runScript@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:160:603 execute@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:161:908 handlePending@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:159:131 runScript@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:160:603 execute@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:161:908 handlePending@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:159:131 runScript@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:160:603 execute@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:161:908 handlePending@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:159:131 runScript@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:160:603 execute@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:161:908 handlePending@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:159:131 runScript@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:160:603 execute@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:161:908 handlePending@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:159:131 runScript@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:160:603 execute@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:161:908 handlePending@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:159:131 runScript@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:160:603 execute@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:161:908 handlePending@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:159:131 runScript@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:160:603 execute@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:161:908 mw.loader</<.implement@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:168:395 @http://localhost:8080/w/load.php?debug=false&lang=en&modules=Base64.js%7Ceasy-deflate.core%2Cdeflate%7Cext.echo.base%2Coverlay%7Cext.echo.overlay.tests%7Cext.eventLogging%2Cflow%2Cmantle%2Cpopups%7Cext.eventLogging.tests%7Cext.flow.components%2Ceditor%2Cparsoid%2Cpreview%2Ctemplating%2Ctests%7Cext.flow.components.tests%7Cext.flow.jquery.conditionalScroll%2CfindWithParent%7Cext.flow.vendor.storer%7Cext.mantle.modules%2Coo%2Cviews%7Cext.mantle.oo.tests%7Cext.mantle.views.tests%7Cext.popups.tests%7Cext.templateData.test%7Cext.templateDataGenerator.data%7Cext.uls.tests%7Cext.visualEditor.base%2Ccore%2Cexperimental%2Clanguage%2Cmediawiki%2Cmwalienextension%2Cmwcore%2Cmwformatting%2Cmwgallery%2Cmwimage%2Cmwlink%2Cmwmeta%2Cmwreference%2Cmwtransclusion%2Cstandalone%2CtargetLoader%2Ctest%2CviewPageTarget%7Cext.visualEditor.core.desktop%7Cext.visualEditor.mwimage.core%7Cext.visualEditor.mwreference.core%7Cext.visualEditor.mwtransclusion.core%7Cext.wikiEditor.toolbar.test%7Cjquery.async%2CautoEllipsis%2CbyteLimit%2CcheckboxShiftClick%2Ccolor%2CcolorUtil%2CgetAttrs%2Chidpi%2ChighlightText%2Ci18n%2CjStorage%2Clocalize%2CmakeCollapsible%2Cmw-jump%2Cplaceholder%2Ctablesorter%2CtextSelection%2Culs%7Cjquery.uls.data%2Cgrid%7Cmediawiki.api.category%2Coptions%2Cparse%2Cwatch%7Cmediawiki.cookie%2CmessagePoster%2Cspecial%2Ctemplate%2Ctoc%7Cmediawiki.language.months%2Cnames%2CspecialCharacters%7Cmediawiki.page.ready%7Cmediawiki.skinning.content.parsoid%7Cmediawiki.special.recentchanges%7Cmediawiki.template.handlebars%7Cmediawiki.ui.anchor%7Cmoment%2Coojs%2Coojs-ui%2Cpapaparse%2Crangefix%2Cunicodejs%7Coojs-ui.styles%7Coojs-ui.styles.icons-editing-core%7Cschema.Popups%7Ctest.mediawiki.qunit.suites%2Ctestrunner%7Ctest.sinonjs&skin=vector&version=20150511T044816Z&*:2785:785 : flowBoard.Api.apiCall(...) is undefined

Event Timeline

EBernhardson raised the priority of this task from to Needs Triage.
EBernhardson updated the task description. (Show Details)
EBernhardson subscribed.
EBernhardson renamed this task from Make qunit test failures readable to Make qunit test failures rcontain useful and readable information about where does it come from, how did you get there, etc.Apr 15 2015, 4:11 PM
EBernhardson renamed this task from Make qunit test failures rcontain useful and readable information about where does it come from, how did you get there, etc to Make qunit test failures contain useful and readable information about where does it come from, how did you get there, etc.
EBernhardson set Security to None.

Surely a single line is not useful! Adding a newline before each @ is slightly more readable. I have inserted another newline at the end of the last trace entry to shows up the line / column / error

Died on test #1
@http://localhost:8080/w/load.php?debug=false&lang=en&modules=Base64.js%7Ceasy-deflate.core%2Cdeflate%7Cext.echo.base%2Coverlay%7Cext.echo.overlay.tests%7Cext.eventLogging%2Cflow%2Cmantle%2Cpopups%7Cext.eventLogging.tests%7Cext.flow.components%2Ceditor%2Cparsoid%2Cpreview%2Ctemplating%2Ctests%7Cext.flow.components.tests%7Cext.flow.jquery.conditionalScroll%2CfindWithParent%7Cext.flow.vendor.storer%7Cext.mantle.modules%2Coo%2Cviews%7Cext.mantle.oo.tests%7Cext.mantle.views.tests%7Cext.popups.tests%7Cext.templateData.test%7Cext.templateDataGenerator.data%7Cext.uls.tests%7Cext.visualEditor.base%2Ccore%2Cexperimental%2Clanguage%2Cmediawiki%2Cmwalienextension%2Cmwcore%2Cmwformatting%2Cmwgallery%2Cmwimage%2Cmwlink%2Cmwmeta%2Cmwreference%2Cmwtransclusion%2Cstandalone%2CtargetLoader%2Ctest%2CviewPageTarget%7Cext.visualEditor.core.desktop%7Cext.visualEditor.mwimage.core%7Cext.visualEditor.mwreference.core%7Cext.visualEditor.mwtransclusion.core%7Cext.wikiEditor.toolbar.test%7Cjquery.async%2CautoEllipsis%2CbyteLimit%2CcheckboxShiftClick%2Ccolor%2CcolorUtil%2CgetAttrs%2Chidpi%2ChighlightText%2Ci18n%2CjStorage%2Clocalize%2CmakeCollapsible%2Cmw-jump%2Cplaceholder%2Ctablesorter%2CtextSelection%2Culs%7Cjquery.uls.data%2Cgrid%7Cmediawiki.api.category%2Coptions%2Cparse%2Cwatch%7Cmediawiki.cookie%2CmessagePoster%2Cspecial%2Ctemplate%2Ctoc%7Cmediawiki.language.months%2Cnames%2CspecialCharacters%7Cmediawiki.page.ready%7Cmediawiki.skinning.content.parsoid%7Cmediawiki.special.recentchanges%7Cmediawiki.template.handlebars%7Cmediawiki.ui.anchor%7Cmoment%2Coojs%2Coojs-ui%2Cpapaparse%2Crangefix%2Cunicodejs%7Coojs-ui.styles%7Coojs-ui.styles.icons-editing-core%7Cschema.Popups%7Ctest.mediawiki.qunit.suites%2Ctestrunner%7Ctest.sinonjs&skin=vector&version=20150511T044816Z&*:283:248
@http://localhost:8080/w/load.php?debug=false&lang=en&modules=Base64.js%7Ceasy-deflate.core%2Cdeflate%7Cext.echo.base%2Coverlay%7Cext.echo.overlay.tests%7Cext.eventLogging%2Cflow%2Cmantle%2Cpopups%7Cext.eventLogging.tests%7Cext.flow.components%2Ceditor%2Cparsoid%2Cpreview%2Ctemplating%2Ctests%7Cext.flow.components.tests%7Cext.flow.jquery.conditionalScroll%2CfindWithParent%7Cext.flow.vendor.storer%7Cext.mantle.modules%2Coo%2Cviews%7Cext.mantle.oo.tests%7Cext.mantle.views.tests%7Cext.popups.tests%7Cext.templateData.test%7Cext.templateDataGenerator.data%7Cext.uls.tests%7Cext.visualEditor.base%2Ccore%2Cexperimental%2Clanguage%2Cmediawiki%2Cmwalienextension%2Cmwcore%2Cmwformatting%2Cmwgallery%2Cmwimage%2Cmwlink%2Cmwmeta%2Cmwreference%2Cmwtransclusion%2Cstandalone%2CtargetLoader%2Ctest%2CviewPageTarget%7Cext.visualEditor.core.desktop%7Cext.visualEditor.mwimage.core%7Cext.visualEditor.mwreference.core%7Cext.visualEditor.mwtransclusion.core%7Cext.wikiEditor.toolbar.test%7Cjquery.async%2CautoEllipsis%2CbyteLimit%2CcheckboxShiftClick%2Ccolor%2CcolorUtil%2CgetAttrs%2Chidpi%2ChighlightText%2Ci18n%2CjStorage%2Clocalize%2CmakeCollapsible%2Cmw-jump%2Cplaceholder%2Ctablesorter%2CtextSelection%2Culs%7Cjquery.uls.data%2Cgrid%7Cmediawiki.api.category%2Coptions%2Cparse%2Cwatch%7Cmediawiki.cookie%2CmessagePoster%2Cspecial%2Ctemplate%2Ctoc%7Cmediawiki.language.months%2Cnames%2CspecialCharacters%7Cmediawiki.page.ready%7Cmediawiki.skinning.content.parsoid%7Cmediawiki.special.recentchanges%7Cmediawiki.template.handlebars%7Cmediawiki.ui.anchor%7Cmoment%2Coojs%2Coojs-ui%2Cpapaparse%2Crangefix%2Cunicodejs%7Coojs-ui.styles%7Coojs-ui.styles.icons-editing-core%7Cschema.Popups%7Ctest.mediawiki.qunit.suites%2Ctestrunner%7Ctest.sinonjs&skin=vector&version=20150511T044816Z&*:281:1 runScript
@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:160:591 execute
@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:161:908 handlePending
@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:159:131 runScript
@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:160:603 execute
@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:161:908 handlePending
@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:159:131 runScript
@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:160:603 execute
@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:161:908 handlePending
@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:159:131 runScript
@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:160:603 execute
@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:161:908 handlePending
@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:159:131 runScript
@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:160:603 execute
@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:161:908 handlePending
@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:159:131 runScript
@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:160:603 execute
@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:161:908 handlePending
@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:159:131 runScript
@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:160:603 execute
@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:161:908 handlePending
@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:159:131 runScript
@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:160:603 execute
@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:161:908 handlePending
@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:159:131 runScript
@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:160:603 execute
@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:161:908 handlePending
@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:159:131 runScript
@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:160:603 execute
@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:161:908 mw.loader</<.implement
@http://localhost:8080/w/load.php?debug=false&lang=en&modules=jquery%2Cmediawiki&only=scripts&skin=vector&version=20150414T193153Z:168:395 
@http://localhost:8080/w/load.php?debug=false&lang=en&modules=Base64.js%7Ceasy-deflate.core%2Cdeflate%7Cext.echo.base%2Coverlay%7Cext.echo.overlay.tests%7Cext.eventLogging%2Cflow%2Cmantle%2Cpopups%7Cext.eventLogging.tests%7Cext.flow.components%2Ceditor%2Cparsoid%2Cpreview%2Ctemplating%2Ctests%7Cext.flow.components.tests%7Cext.flow.jquery.conditionalScroll%2CfindWithParent%7Cext.flow.vendor.storer%7Cext.mantle.modules%2Coo%2Cviews%7Cext.mantle.oo.tests%7Cext.mantle.views.tests%7Cext.popups.tests%7Cext.templateData.test%7Cext.templateDataGenerator.data%7Cext.uls.tests%7Cext.visualEditor.base%2Ccore%2Cexperimental%2Clanguage%2Cmediawiki%2Cmwalienextension%2Cmwcore%2Cmwformatting%2Cmwgallery%2Cmwimage%2Cmwlink%2Cmwmeta%2Cmwreference%2Cmwtransclusion%2Cstandalone%2CtargetLoader%2Ctest%2CviewPageTarget%7Cext.visualEditor.core.desktop%7Cext.visualEditor.mwimage.core%7Cext.visualEditor.mwreference.core%7Cext.visualEditor.mwtransclusion.core%7Cext.wikiEditor.toolbar.test%7Cjquery.async%2CautoEllipsis%2CbyteLimit%2CcheckboxShiftClick%2Ccolor%2CcolorUtil%2CgetAttrs%2Chidpi%2ChighlightText%2Ci18n%2CjStorage%2Clocalize%2CmakeCollapsible%2Cmw-jump%2Cplaceholder%2Ctablesorter%2CtextSelection%2Culs%7Cjquery.uls.data%2Cgrid%7Cmediawiki.api.category%2Coptions%2Cparse%2Cwatch%7Cmediawiki.cookie%2CmessagePoster%2Cspecial%2Ctemplate%2Ctoc%7Cmediawiki.language.months%2Cnames%2CspecialCharacters%7Cmediawiki.page.ready%7Cmediawiki.skinning.content.parsoid%7Cmediawiki.special.recentchanges%7Cmediawiki.template.handlebars%7Cmediawiki.ui.anchor%7Cmoment%2Coojs%2Coojs-ui%2Cpapaparse%2Crangefix%2Cunicodejs%7Coojs-ui.styles%7Coojs-ui.styles.icons-editing-core%7Cschema.Popups%7Ctest.mediawiki.qunit.suites%2Ctestrunner%7Ctest.sinonjs&skin=vector&version=20150511T044816Z&*
   :2785:785 : flowBoard.Api.apiCall(...) is undefined

I have no JavaScript knowledge. Maybe the trace can be reformatted before being shown?

Krinkle subscribed.

This is mostly an upstream issue (both Grunt and Karma), as well as some general semantics in JavaScript that cause certain weird test failures to cascade into a large number of unrelated problems.

In general, and especially with QUnit/JavaScript, always look for the first test failure when trying to understand what went wrong.

The long stacktraces indeed make it harder to find the name of the test that failed. T153759: MediaWiki qunit Jenkins jobs should emit a junit result and process it could help with that. I'm closing this because I don't think it's likely there's anything else we can do about this in the medium run. Keeping the task open doesn't help us.