let certCached = true; let secondTabStarted = false; function onCertDialogLoaded(subject) { certCached = false; // Click OK. subject.acceptDialog(); } Services.obs.addObserver(onCertDialogLoaded, "cert-dialog-loaded"); registerCleanupFunction(() => { Services.obs.removeObserver(onCertDialogLoaded, "cert-dialog-loaded"); }); async function setup() { await SpecialPowers.pushPrefEnv({ set: [ ["security.default_personal_cert", "Ask Every Time"], ["privacy.partition.network_state", false], ], }); } function getResult() { // The first tab always returns true. if (!secondTabStarted) { certCached = true; secondTabStarted = true; return true; } // The second tab returns true if the cert is cached, so it will be different // from the result of the first tab, and considered isolated. let ret = certCached; certCached = true; secondTabStarted = false; return ret; } // aGetResultImmediately must be true because we need to get the result before // the next tab is opened. IsolationTestTools.runTests( "https://requireclientcert.example.com", getResult, null, // aCompareResultFunc setup, // aBeginFunc true ); // aGetResultImmediately