Files
sindan-client/macos/speedtest.js
2023-06-25 02:58:13 +09:00

87 lines
2.5 KiB
JavaScript

// speedtest.js
// author: bashow
// 2020/07/18
// Requirements:
// brew instal node
// npm i puppeteer
// npm i speedline
// Hot to use:
// node speedtest.js <url>
const puppeteer = require('puppeteer');
var url = process.argv[2];
(async () => {
const browser = await puppeteer.launch({
headless: 'true',
userDataDir: '/dev/null'
});
const page = await browser.newPage();
await page.setDefaultNavigationTimeout(60000);
try {
await page.goto(url, { waitUntil: 'networkidle0' });
await page.waitForSelector('#shareArea', { visible: true, timeout: 60000 });
let frames = page.frames();
if (frames.find( f => f.url().indexOf("ipv6") > 0) ) {
var ipv6frame = frames.find(
f =>
f.url().indexOf("ipv6") > 0);
const ipv6rttItem = await ipv6frame.$('#pingText');
const ipv6rtt = await (await ipv6rttItem.getProperty('textContent')).jsonValue();
const ipv6jitItem = await ipv6frame.$('#jitText');
const ipv6jit = await (await ipv6jitItem.getProperty('textContent')).jsonValue();
const ipv6dlItem = await ipv6frame.$('#dlText');
const ipv6dl = await (await ipv6dlItem.getProperty('textContent')).jsonValue();
const ipv6ulItem = await ipv6frame.$('#ulText');
const ipv6ul = await (await ipv6ulItem.getProperty('textContent')).jsonValue();
console.log('IPv6_RTT:' + ipv6rtt);
console.log('IPv6_JIT:' + ipv6jit);
console.log('IPv6_DL:' + ipv6dl);
console.log('IPv6_UL:' + ipv6ul);
}
if (frames.find( f => f.url().indexOf("ipv4") > 0) ) {
var ipv4frame = frames.find(
f =>
f.url().indexOf("ipv4") > 0);
const ipv4rttItem = await ipv4frame.$('#pingText');
const ipv4rtt = await (await ipv4rttItem.getProperty('textContent')).jsonValue();
const ipv4jitItem = await ipv4frame.$('#jitText');
const ipv4jit = await (await ipv4jitItem.getProperty('textContent')).jsonValue();
const ipv4dlItem = await ipv4frame.$('#dlText');
const ipv4dl = await (await ipv4dlItem.getProperty('textContent')).jsonValue();
const ipv4ulItem = await ipv4frame.$('#ulText');
const ipv4ul = await (await ipv4ulItem.getProperty('textContent')).jsonValue();
console.log('IPv4_RTT:' + ipv4rtt);
console.log('IPv4_JIT:' + ipv4jit);
console.log('IPv4_DL:' + ipv4dl);
console.log('IPv4_UL:' + ipv4ul);
}
} catch (e) {
console.error(e);
}
// await page.screenshot({path: 'screenshot.png'});
await browser.close();
})();