Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save wouterkroes/09776a8dbecf4878f1c6635efd9ec8b8 to your computer and use it in GitHub Desktop.
Save wouterkroes/09776a8dbecf4878f1c6635efd9ec8b8 to your computer and use it in GitHub Desktop.
tampermonkey | ADO Set Auto Complete for Pull Request
// ==UserScript==
// @name ADO Set Auto Complete for Pull Request
// @namespace http://tampermonkey.net/
// @author wouterkroes
// @updateURL https://gist.github.com/wouterkroes/09776a8dbecf4878f1c6635efd9ec8b8/raw/userscripts-ado-set-auto-complete-pull-request.js
// @downloadURL https://gist.github.com/wouterkroes/09776a8dbecf4878f1c6635efd9ec8b8/raw/userscripts-ado-set-auto-complete-pull-request.js
// @version 0.0.6
// @description Set auto-complete to true for pull request in Azure DevOps (ADO).
// @match https://dev.azure.com/*pullrequestcreate*
// @match https://dev.azure.com/*pullrequest*
// @grant none
// ==/UserScript==
// https://stackoverflow.com/a/61511955/5653962
function waitForElm(selector) {
return new Promise((resolve) => {
if (document.querySelector(selector)) {
return resolve(document.querySelector(selector));
}
const observer = new MutationObserver((mutations) => {
if (document.querySelector(selector)) {
resolve(document.querySelector(selector));
observer.disconnect();
}
});
observer.observe(document.body, {
childList: true,
subtree: true,
});
});
}
const delay = (ms) => {
return new Promise((resolve) => setTimeout(resolve, ms));
};
(async () => {
("use strict");
const btn = await waitForElm(
'.repos-pr-header-complete-button .bolt-split-button-main:not([aria-disabled="true"])'
);
if(btn.innerText !== "Set auto-complete") {
return;
}
const modal = document.querySelector(".bolt-portal-host");
await delay(1000); // wait for ADO JavaScript to bind javascript listener
modal.style.visibility = "hidden"; // do not show modal to prevent modal flicker
btn.click();
const modalBtn = await waitForElm(
".bolt-portal-host .bolt-panel-footer-buttons .primary"
);
modalBtn.click();
modal.style.visibility = "visible"; // restore modal to default visibility
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment