[20:23:08] Krinkle: https://integration.wikimedia.org/ci/job/quibble-vendor-mysql-php72-noselenium-docker/139096/console [20:23:27] 21:12:51 Chrome Headless 90.0.4430.212 (Linux x86_64) LOG: 'Exception in module-execute in module ext.echo.mobile:' [20:23:27] 21:12:51 Chrome Headless 90.0.4430.212 (Linux x86_64) WARN: TypeError: Cannot read property 'require' of undefined [20:23:28] 21:12:51 TypeError: Cannot read property 'require' of undefined [20:23:28] 21:12:51 at mobile/NotificationBadge.js [20:23:56] Krinkle: related to https://gerrit.wikimedia.org/r/c/mediawiki/extensions/Echo/+/767586 ? [20:24:06] https://gerrit.wikimedia.org/r/768068 [20:24:11] checking.. [20:24:33] the failure is from https://gerrit.wikimedia.org/r/c/mediawiki/extensions/DiscussionTools/+/768134 [20:24:46] mobile = mw.mobileFrontend.require( 'mobile.startup' ), [20:24:55] ok, so it still references it, but doesn't declare a dependency anywhere [20:25:15] what a mess [20:25:20] i've had bullshit test failures for so many different reasons recently [20:25:23] i am slowly going insane [20:26:43] deploying... [20:28:52] thank you [20:28:55] feel free to also +2 that DiscussionTools patch [20:29:49] zuul change is now live [20:30:35] MatmaRex: btw, if you're feeling like using something new for fun - https://api.qunitjs.com/QUnit/test.each/ is a thing now :) [20:31:02] will it stop karma timing out for no reason? [20:31:07] although would've made this change harder [20:31:10] and no, it won't do that :) [20:31:18] I see you already have each one defined as its own test [20:31:21] well [20:31:36] if it was a single large test() with a loop inside, then this would've given each its own pogress and timeout [20:31:42] but you're already at that stage [20:32:55] MatmaRex: btw, if you're in and/or can otherwise see this room - https://app.element.io/#/room/#whatwg:matrix.org - I'm figuring out how to fix the FT polyfill to be more spec compliant [20:34:41] In a nut shell: the URL spec says: iterate over each query param char and if it's % then check the next number against a valid range and either decode or emit as literal accordingly, wherea's the legacy decodeURIComponent function (which is from an annex to the ES spec, totally unrelated) is much stricter and has no such concept. [20:34:57] oh, neat [20:35:14] https://github.com/jsdom/whatwg-url/blob/a4cb13309246ca9ecf03404fdbf0d23ecaf114dd/lib/urlencoded.js#L10-L35 https://github.com/jsdom/whatwg-url/blob/a4cb13309246ca9ecf03404fdbf0d23ecaf114dd/lib/percent-encoding.js#L20-L36 [20:35:38] vs https://github.com/Financial-Times/polyfill-library/blob/d8b09214bc897b07f81e70f419cc5093276c502c/polyfills/URL/polyfill.js#L83-L90 [20:36:09] I'll see what I can cherry-pick from there without pulling in tons of other dependencies [20:36:43] I intentionally didn't use hte whatwg-url implemetnation because that jsom library is written in ES6 and basically re-uses tons of other internal utilities and would require shipping basically a whole browser