Skip to content

Instantly share code, notes, and snippets.

View juliandescottes's full-sized avatar

Julian Descottes juliandescottes

View GitHub Profile
@juliandescottes
juliandescottes / bidi_navigate_top1000.js
Created October 28, 2024 15:15
Small script for the bidi web client to test navigation to top 1000 websites
(async function() {
const topSites = [
["1","youtube.com","440752994","15665149874.118353"],
["2","facebook.com","339577736","9589908764.521015"],
["3","wikipedia.org","273327976","37860666524.64178"],
["4","reddit.com","226775459","5500222213.766945"],
["5","instagram.com","208492752","10015364198.690928"],
["6","tiktok.com","189077770","1392147411.753438"],
["7","pinterest.com","161036140","4510761388.202763"],
["8","quora.com","126679778","1597307327.397523"],
function matchURLPattern(pattern, input) {
return pattern.test(input);
}
function parseURLPattern(patternObj) {
if (patternObj.type === "string") {
return new URLPattern(patternObj.pattern);
} else {

WebDriver BiDi

Support custom browser to client messages

  • to install and to remove pre-load (bootstrap) -> "to add and to remove" (to be in sync with the command names?)

Two suggestions below to slightly rephrase some paragraphs in the code example:

  • While this was already helpful to just call those pre-defined functions from within any script.evaluate or script.callFunction command their return value needed to be returned via the command’s response.

-> "This was already helpful to perform some setup logic, or to expose functions that could be called from script.evaluate or script.callFunction commands later on. However there was no way to properly handle dynamic situations, like monitoring DOM mutations and notify the client about the details."

// Here goes the list of tests from the manifest, with the skip-if etc...
const tests = ``;
// JS and python don't follow the same alphabetical order for special characters
// the safest is to take the output from the linter and add it here.
const expectedOrder = ``.split("\n");
const sortTests = str => {
const lines = str.split("\n");
const tests = [];
# coding=UTF-8
import base64
import contextlib
import os
import pdb
import struct
import time
import urllib
from datetime import datetime
@juliandescottes
juliandescottes / createmessagehandler.js
Last active April 26, 2024 22:50
createmessagehandler.js
const { RootMessageHandlerRegistry } = ChromeUtils.import(
"chrome://remote/content/shared/messagehandler/RootMessageHandlerRegistry.jsm"
);
const { RootMessageHandler } = ChromeUtils.import(
"chrome://remote/content/shared/messagehandler/RootMessageHandler.jsm"
);
const { WindowGlobalMessageHandler } = ChromeUtils.import(
"chrome://remote/content/shared/messagehandler/WindowGlobalMessageHandler.jsm"
);
const moduleLayout = {
root: {
windowglobal: {},
contentprocess: {
worker: {},
},
},
};
@juliandescottes
juliandescottes / mass_alert_acknowledge.js
Created August 23, 2021 08:41
Acknowledge alers on Perfherder UI
function getPageNumber() {
const previous = document.querySelector("[aria-label='Previous']");
return previous.closest("[aria-label*='Page']").getAttribute("aria-label").replace("Page ", "") * 1;
}
(async () => {
while (getPageNumber() > 1) {
document.querySelectorAll("[data-testid*='summary'].form-check-input").forEach(e => e.click())
await new Promise(r => setTimeout(r, 3000));
document.querySelectorAll('.btn-secondary [data-icon="check"]').forEach(e => e.parentNode.click())
@juliandescottes
juliandescottes / marionette_release_notes.md
Last active May 14, 2024 11:00
Marionette release notes

Quick guide for updating release notes for Marionette on MDN

  1. Check the bugs fixed in release RELEASE: https://bugzilla.mozilla.org/buglist.cgi?j_top=OR&f1=cf_status_firefoxRELEASE&o1=equals&resolution=FIXED&o2=equals&query_format=advanced&f2=cf_status_firefoxRELEASE&v1=fixed&component=Marionette&v2=verified&product=Testing

  2. In this bug list, find the bugs which are relevant for WebDriver users.

  3. If needed, clone the mdn/content repository (https://github.com/mdn/content).

  4. Create a branch for the release, e.g. for Release 91 you might name the branch marionette91.

Bug 1687954 - Pause on JS exceptions doesn't work properly in Fission (8)
Bug 1687963 - Debugger should properly break on debugger; keyword in remote frame (8)
Bug 1665020 - DevTools Toolbox broken when navigating cross origin (20)
Bug 1568880 - Make the inspector's search field work with remote targets (8)
Bug 1681698 - Bootstrap thread actor as soon as we start registering breakpoints via the Watcher actor (20)
Total: 64 points
Why did I prioritize this way:
I did not include the storage bugs, because this is already broken today, and not Fission related.
Also did not include most of the server-side resource support. Unless there is a huge feature broken with fission because of that I don't think it will have any user impact.