diff --git a/.core/css/main.css b/.core/css/main.css new file mode 100644 index 0000000..6f9a3c2 --- /dev/null +++ b/.core/css/main.css @@ -0,0 +1,18 @@ +.test-btn { + display: none; + position: absolute; + top: 5px; + right: 5px; + background-color: rgb(207, 207, 207); + color: black; + border: 1px solid rgba(167, 167, 167, 0.75); + padding: 5px 10px; + box-shadow: 0px 0px 5px rgba(71, 71, 71, 0.75); +} + +.test-btn:active { + box-shadow: 0px 0px 0px rgba(71, 71, 71, 0.75); +} +body:hover .test-btn { + display: initial; +} \ No newline at end of file diff --git a/.core/js/main.js b/.core/js/main.js new file mode 100644 index 0000000..8af04b3 --- /dev/null +++ b/.core/js/main.js @@ -0,0 +1,17 @@ +let css = document.createElement('link'); +css.rel = 'stylesheet'; +css.href = '../.core/css/main.css'; +document.body.appendChild(css); + + + +let button = document.createElement('button'); + +button.classList.add('test-btn'); +button.innerText = 'Run Tests'; + +button.addEventListener('click', function() { + window.open('./tests.html', '_blank'); +}) + +document.body.appendChild(button); \ No newline at end of file diff --git a/.core/js/test.js b/.core/js/test.js new file mode 100644 index 0000000..6f59b9e --- /dev/null +++ b/.core/js/test.js @@ -0,0 +1,78 @@ + +const body = document.querySelector('body'); +const head = document.querySelector('head'); + +async function runMochaTests(list=[]) { + + if(list.length > 0) { + // Add CSS + $el('link', {rel: 'stylesheet', href: 'https://unpkg.com/mocha/mocha.css'}).appendTo(head); + + // Add report canvas + $el('div', {id: 'mocha'}).appendTo(body); + + // Add required scripts + // $el('script', { src: 'https://unpkg.com/chai/chai.js', type: 'module' }).appendTo(body); + + let loadChai = new Promise((resolve, reject) => { + $el('script', { src: 'https://unpkg.com/chai/chai.js', type: 'module' }).addEvent('load', () => { + console.log('Chai loaded') + resolve() + }).appendTo(body); + }) + + let loadMocha = new Promise((resolve, reject) => { + $el('script', { src: 'https://unpkg.com/mocha/mocha.js' }).addEvent('load', () => { + mocha.setup({ ui: "bdd" }); + mocha.checkLeaks(); + console.log('Mocha loaded') + resolve() + }).appendTo(body); + }) + + testsLoaded = []; + loadMocha.then(() => { + // Add tests + list.forEach(test => { + testsLoaded.push( + new Promise((resolve, reject) => { + $el('script', { src: `test/test.${test}.js`, type:'module' }).addEvent('load', () => { + console.log(`Test ${test} loaded`); + resolve(); + }).appendTo(body); + }) + ); + // $el('script', { src: `test/test.${test}.js` }).appendTo(body); + }); + + Promise.all(testsLoaded).then(() => { + $el('script', { class: 'mocha-exec' }, 'mocha.run();').appendTo(body); + }); + + }); + + } + +} + +// Quick and Dirty Element maker +function $el(tag, attributes={}, content='') { + const obj = document.createElement(tag); + obj.innerHTML = content; + + Object.keys(attributes).forEach(key => { + obj.setAttribute(key, attributes[key]); + }); + + obj.appendTo = function (el) { + el.appendChild(this); + return obj + }; + + obj.addEvent = function(evt, fn) { + obj.addEventListener(evt, fn); + return obj; + } + + return obj; +} \ No newline at end of file diff --git a/week-01/index.html b/week-01/index.html new file mode 100644 index 0000000..2439827 --- /dev/null +++ b/week-01/index.html @@ -0,0 +1,28 @@ + + +
+ + +