Verizon speedtest never starts
Categories
(Web Compatibility :: Site Reports, defect, P2)
Tracking
(Webcompat Priority:P2, Webcompat Score:5)
People
(Reporter: jesup, Unassigned, NeedInfo)
References
(Blocks 1 open bug, )
Details
(Keywords: webcompat:needs-diagnosis, webcompat:site-report, Whiteboard: [webcompat:sightline][webcompat:core][autowebcompat:processed][autowebcompat:repro-failed])
User Story
user-impact-score:180 platform:windows,mac,linux,android impact:feature-broken configuration:general affects:some branch:release diagnosis-team:networking autowebcompat-repro-status:failed autowebcompat-repro-reason:not_reproducible autowebcompat-repro-report-os:all
https://verizon.com/speedtest rarely actually starts measuring in firefox for me. Two machines (both windows).
STR: go to the URL. Click on Get Started under the Mbps image. You get three throbbing dots, then it puts up a test info page with a completion and up and down numbers, with an animation. It should start measuring. It never actually gets past 0% or shows numbers other than 0Mbps
Jeff and Holger also tried; it failed for them, though both were able to somehow get it to work by playing around in devtools (pause and resume for Holger). These tricks didn't work for me
Jeff sees network requests to sites I don't see in my profile: https://share.firefox.dev/488zApo
| Reporter | ||
Comment 1•1 year ago
|
||
Perhaps this is an order-of-settimeout-firings issue; jeff indicated that the load of the relevant scripts is kicked off from a settimeout
Updated•1 year ago
|
Comment 2•1 year ago
|
||
I think the relevant setTimeout is here:
Object(o.useEffect) (
(
function () {
setTimeout((function () {
v(0),
Fr = setInterval(S, 4000)
}), 1000)
}
),
[]
),
Comment 3•1 year ago
|
||
And that seemed triggered by this setTimeout:
setTimeout((function () {
m(!0)
}), 5800) : g != e.data.OneClickInitializedFieldsData.exceededAttempt &&
Comment 4•1 year ago
|
||
And that is triggered by the load event on: https://www.verizon.com/SpeedTest/SpeedTestHandler.ashx?oneclickservicename=loadAllConfig&lobtype=null&LanIPAddress=undefined&isCustomerLoggedin=N&cusLoggedInVz=undefined&sessionid=null&rapsessionid=null&dnmstate=null&flow=SEOFIOSDIGITAL
Comment 5•1 year ago
|
||
In the triage meeting this seemed to work the same in Chrome and Firefox for people on macOS and Linux. If it's still reproducible on Windows, could someone diagnosing the bug set the triage flags?
Updated•1 year ago
|
Updated•1 year ago
|
| Reporter | ||
Comment 6•1 year ago
|
||
It seems random if it will start the test or just sit there; I've seen it fail or work randomly on one Windows machine; on a linux machine it seems to permafail, but windows seemed to be permafail before for me two. A different profile (running a local opt build) worked for me the only time I tried it on linux, so as I said it appears to be flaky (i.e. likely there's a race condition in their code).
Updated•11 months ago
|
Comment 7•11 months ago
|
||
I can repro on 143 on Fedora and nightly on Windows.
Comment 8•10 months ago
|
||
Looking at this more I see the download test initiated here:
downloadTest
https://www.verizon.com/speedtest/src/Ndt/ndt7-download-worker.js:82:12
workerMain
https://www.verizon.com/speedtest/src/Ndt/ndt7-download-worker.js:34:25
It's open a websocket: wss://nwrknjmd-0354336e-inet.vzbi.com:4443/ndt/v7/download?vpimTestUUID=253ca89c-4649-484b-b4c8-f9345dec63c1&vpimTestThreadNumber=7&vpimTestThreadIndex=2
Comment 9•10 months ago
|
||
Randal is seeing the code from comment 2 being hit but not seeing ndt7-download-worker.js
Comment 10•10 months ago
|
||
The workers are created in https://www.verizon.com/speedtest/ak-cached/1w/js/bundle.js here:
case 0:
if (
!0 === t.userAcceptedDataPolicy ||
!0 === t.mlabDataPolicyInapplicable
) {
e.next = 3;
break
}
return n.error(
'The M-Lab data policy is applicable and the user has not explicitly accepted that data policy.'
),
e.abrupt('return', 1);
case 3:
return s = new Worker(r),
f = new Promise(
Comment 11•8 months ago
|
||
https://scache-ws.vzw.com/vendor/transcend/vcg/airgap.js
var xP = e => {
let t = "WebSocket"
, o = e[t];
if (o) {
let n = function(...r) {
if (W())
return new o(...r);
let[i] = r
, a = new Q({
type: "websocket",
url: typeof i == "string" ? i : i.href
})
, c = a.serialize()
, p = "[native";
if (oe(a))
return `${c}` != `${i}` && (r[0] = c),
new o(...r);
throw io(t, c)
};
n.prototype = o.prototype,
n.prototype.constructor = n,
b(["CONNECTING", "OPEN", "CLOSING", "CLOSED"], r => {
let i = zt(o, r);
i && ge(n, r, i)
}
),
e[t] = n
}
}
;
This function is called with the following call stack:
xP (https://scache-ws.vzw.com/vendor/transcend/vcg/airgap.js:formatted#10594)
GP (https://scache-ws.vzw.com/vendor/transcend/vcg/airgap.js:formatted#10893)
Ir (https://scache-ws.vzw.com/vendor/transcend/vcg/airgap.js:formatted#10935)
TN (https://scache-ws.vzw.com/vendor/transcend/vcg/airgap.js:formatted#15687)
Yh (https://scache-ws.vzw.com/vendor/transcend/vcg/airgap.js:formatted#15553)
<anonymous> (https://scache-ws.vzw.com/vendor/transcend/vcg/airgap.js:formatted#15794)
<anonymous> (https://scache-ws.vzw.com/vendor/transcend/vcg/airgap.js:formatted#15796)
(global) (https://scache-ws.vzw.com/vendor/transcend/vcg/airgap.js:formatted#15798)
But the inner function n() is only called on Chrome but not on Firefox. The call stack for n in Chrome is:
n (airgap.js:10)
(anonymous) (bundle.js:2)
S (bundle.js:2)
(anonymous) (bundle.js:2)
Promise.then
(anonymous) (bundle.js:2)
E (bundle.js:2)
(anonymous) (bundle.js:2)
d (bundle.js:2)
(anonymous) (bundle.js:2)
(anonymous) (bundle.js:2)
n (bundle.js:2)
l (bundle.js:2)
(anonymous) (bundle.js:2)
(anonymous) (bundle.js:2)
(anonymous) (bundle.js:2)
T (bundle.js:2)
(anonymous) (bundle.js:311)
setTimeout
(anonymous) (bundle.js:311)
fl (bundle.js:2)
Au (bundle.js:2)
t.unstable_runWithPriority (bundle.js:2)
Yo (bundle.js:2)
Iu (bundle.js:2)
(anonymous) (bundle.js:2)
z (bundle.js:2)
S.port1.onmessage (bundle.js:2)
postMessage
r (bundle.js:2)
t.unstable_scheduleCallback (bundle.js:2)
Qo (bundle.js:2)
hu (bundle.js:2)
fu (bundle.js:2)
Ei (bundle.js:2)
(anonymous) (bundle.js:311)
setTimeout
(anonymous) (bundle.js:311)
Comment 12•8 months ago
•
|
||
The Chrome call stack includes: https://www.verizon.com/speedtest/ak-cached/1w/js/bundle.js
E = function (e, t) {
return console.log('entered fetchServerList', t),
new Promise(
(
function (e, t) {
var r = n.oneclickInitialiseFieldsData.regionCode.toUpperCase();
console.log('regionCode', r, '-');
var o = '';
o = 'https://www.verizon.com'.includes('www.verizon.com') ? fetch(
'https://WASKDCFN-0222304B-INET.vzbi.com:8081/api/ndtServers'
) : fetch(
'https://WASKDCFN-0222304B-INET.vzbi.com:8081/api/ndtServers',
{
method: 'GET',
headers: {
'Content-Type': 'application/json'
},
proxy: 'https://proxy.ebiz.verizon.com:9290'
}
),
console.log('fetchApiURL:', o),
o.then((function (e) {
return e.json()
})).then((function (e) {
return _(r, e)
})).then(
(
function (t) {
return Promise.allSettled(t.map(S)).then(
(
function (t) {
var n = t.filter((function (e) {
return 'fulfilled' === e.status
})).map((function (e) {
return e.value
}));
e(n),
console.log('End of fetchServerList :' + n)
}
)
)
}
)
).catch(
(
function (e) {
console.log('test failed', e),
k(
'SET_IS_ERRORED',
{
isErrored: !0,
whoInvoked: '',
reqID: '',
error: 'connection error'
}
)
}
)
)
}
)
)
},
The call to WebSocket is done via Promise.allSettled(t.map(S)). Interestingly I found that the promise from fetch('https://WASKDCFN-0222304B-INET.vzbi.com:8081/api/ndtServers') never resolves, nor it shows up in the network log in devtools. This blocks S being called, and thus passing it to networking.
Updated•7 months ago
|
Comment 13•1 month ago
|
||
I tested this with a new profile, and it worked.
- I used nordVPN while testing this
- Opened new profile
- Loaded https://www.verizon.com/speedtest/ - clicked Take speed test.
83
Mbps
UPLOAD
72
Mbps
Current upload speed is 00 Mbps.
Better matters. Find out why
IP : 169.150.254.133
Latency : 135 ms
Server Location : Dallas, TX
Updated•1 month ago
|
Updated•1 month ago
|
Comment 14•24 days ago
|
||
Randell, can you still reproduce this?
Description
•