// ==UserScript==
// @name LinkedIn Assessment Assistant
// @namespace LinkedIn Assessment Assistant
// @version 2.0
// @description A light weight script to convert LinkedIn assessment questions into a clickable hyperlink to help you pass.
// @author JustSomeGuy
// @include *linkedin.com/skill-assessments/*
// @include *linkedin.com/in/*/detail/assessments/*
// @grant none
// @downloadURL none
// ==/UserScript==aaa
// allow mouse events
(function reStyle(){
var style = ``;
document.head.insertAdjacentHTML("beforeend", style);
})();
// loop check()
setInterval(function(){ check(); }, 100);
function convertQuestionToHyperLink() {
// get elements
var questionElement = document.querySelectorAll(".sa-assessment-quiz__title-question")[0];
var questionTextElement = document.querySelectorAll(".sa-assessment-quiz__multi-line")[0];
var question = document.querySelectorAll(".sa-assessment-quiz__multi-line span")[0];
var question2 = document.querySelectorAll(".sa-code-block")[0];
var title = document.getElementsByClassName("mt1")[0];
// check if question exists
if (typeof(question) != 'undefined' && question !== null) {
// get question
question = question.innerHTML;
// if it exists, get second part of question
if (typeof(question2) != 'undefined' && question2 !== null) {
question2 = question2.innerHTML;
} else {
question2 = "";
}
//get name of assessment
title = title.innerHTML;
// remove "assessment" from string
title = title.replace("Assessment", "");
// remove leading/trailing spaces
title = title.trim();
var i;
// remove formatting - loop in case of multiple occurrences
for (i = 0; i < 10; i++) {
question = question.replace('','');
question = question.replace('','');
}
// set url question
var urlquestion = htmlDecode(question + question2);
// set search URL
var url = "https://google.com/search?q="+title+' '+urlquestion.split(' ').join('+');
// direct changes to the question breaks the process
// create container for hyperlinked question
var newquestionElement = document.createElement("span");
// create hyperlink
var a = document.createElement("a");
// attach question to new container
var newquestionText = document.createTextNode(question);
// check to see if questionSpan id exists
var questionSpan = document.getElementById("questionSpan");
// set href
a.href = url;
// set target
a.target = '_blank';
// hide existing question container
questionTextElement.style.display = 'none';
// attach new container with clickable hyperlink
newquestionElement.appendChild(a).appendChild(newquestionText);
// set id of new container
newquestionElement.id = "questionSpan";
// remove questionSpan element if it exists
if (typeof(questionSpan) != 'undefined' && questionSpan !== null) {
questionSpan.remove();
}
// add questionSpan element before answers element
questionElement.insertBefore(newquestionElement, questionElement.childNodes[0]);
}
}
function htmlDecode(input){
var e = document.createElement('div');
e.innerHTML = input;
return e.childNodes[0].nodeValue;
}
function check(){
var cnt = document.querySelectorAll("[id^='ember'] [class*='artdeco-button__text']");
var qcnt = document.querySelectorAll("button.pv-assessment-item__action");
var dismissbtn = document.querySelectorAll("button.artdeco-modal__dismiss")[0];
var backbtn = document.querySelectorAll("button.mr2")[0];
if (typeof(backbtn) != 'undefined' && backbtn !== null) {
backbtn.addEventListener('click', function(){
setTimeout(function() {
check();
}, 1500);
}, false);
}
if (typeof(dismissbtn) != 'undefined' && dismissbtn !== null) {
dismissbtn.addEventListener('click', function(){
setTimeout(function() {
check();
}, 1500);
}, false);
}
var i;
for (i = 0; i < cnt.length; i++) {
if (cnt[i].innerHTML.includes("Next") || cnt[i].innerHTML.includes("Start")) {
cnt[i].addEventListener('click', function(){
setTimeout(function() {
convertQuestionToHyperLink();
}, 600);
}, false);
} else {
cnt[i].addEventListener('click', function(){
setTimeout(function() {
check();
}, 1500);
}, false);
}
}
for (i = 0; i < qcnt.length; i++) {
qcnt[i].addEventListener('click', function(){
setTimeout(function() {
check();
}, 1500);
}, false);
}
}