added testimport.js, fixed repo= qs handling

This commit is contained in:
Steven Hugg 2022-02-12 10:55:05 -06:00
parent 8e8a65d44b
commit f73e1dbf66
5 changed files with 1106 additions and 2494 deletions

14
.gitignore vendored
View File

@ -1,13 +1,13 @@
*~ *~
node_modules node_modules
local/ ./local/
tests_output/ ./tests_output/
test/output/ ./test/output/
.DS_Store .DS_Store
tmp/ ./tmp/
web/ ./web/
release/ ./release/
gen/ ./gen/
config.js config.js
chromedriver.log chromedriver.log
nightwatch.conf.js nightwatch.conf.js

3488
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -52,7 +52,7 @@
"chromedriver": "^97.0.1", "chromedriver": "^97.0.1",
"heapdump": "^0.3.15", "heapdump": "^0.3.15",
"jsfuzz": "^1.0.14", "jsfuzz": "^1.0.14",
"nightwatch": "^1.7.13", "nightwatch": "^2.0.5",
"reflect-metadata": "^0.1.13", "reflect-metadata": "^0.1.13",
"rgbquant": "^1.1.2", "rgbquant": "^1.1.2",
"typedoc": "^0.22.11" "typedoc": "^0.22.11"

View File

@ -187,8 +187,8 @@ class UserPrefs {
getLastPlatformID() { getLastPlatformID() {
return hasLocalStorage && !isEmbed && localStorage.getItem("__lastplatform"); return hasLocalStorage && !isEmbed && localStorage.getItem("__lastplatform");
} }
getLastRepoID() { getLastRepoID(platform: string) {
return hasLocalStorage && !isEmbed && localStorage.getItem("__lastrepo_" + platform_id); return hasLocalStorage && !isEmbed && platform && localStorage.getItem("__lastrepo_" + platform);
} }
shouldCompleteTour() { shouldCompleteTour() {
return hasLocalStorage && !isEmbed && !localStorage.getItem("8bitworkshop.hello"); return hasLocalStorage && !isEmbed && !localStorage.getItem("8bitworkshop.hello");
@ -2372,20 +2372,25 @@ function setPlatformUI() {
} }
export function getPlatformAndRepo() { export function getPlatformAndRepo() {
// lookup repository for this platform // lookup repository for this platform (TODO: enable cross-platform repos)
repo_id = qs.repo || userPrefs.getLastRepoID(); platform_id = qs.platform || userPrefs.getLastPlatformID();
repo_id = qs.repo;
// only look at cached repo_id if file= is not present, so back button works
if (!qs.repo && !qs.file)
repo_id = userPrefs.getLastRepoID(platform_id);
// are we in a repo?
if (hasLocalStorage && repo_id && repo_id !== '/') { if (hasLocalStorage && repo_id && repo_id !== '/') {
var repo = getRepos()[repo_id]; var repo = getRepos()[repo_id];
// override query string params w/ repo settings
if (repo) { if (repo) {
qs.repo = repo_id; qs.repo = repo_id;
if (repo.platform_id && !qs.platform) if (repo.platform_id)
qs.platform = platform_id = repo.platform_id; qs.platform = platform_id = repo.platform_id;
if (!qs.file) if (!qs.file && repo.mainPath)
qs.file = repo.mainPath; qs.file = repo.mainPath;
requestPersistPermission(true, true); //requestPersistPermission(true, true);
} }
} else { } else {
platform_id = qs.platform || userPrefs.getLastPlatformID();
repo_id = ''; repo_id = '';
delete qs.repo; delete qs.repo;
} }

75
test/web/testimport.js Normal file
View File

@ -0,0 +1,75 @@
// https://nightwatchjs.org/api/
//var IDEURL = 'https://8bitworkshop.com/dev/';
var IDEURL = 'http://localhost:8000/'
var REPO = 'sehugg/happy2020'
var PLATFORM = 'astrocade'
var FILE = 'happy2020.c'
var PRESETFILE = 'hello.c'
var QS_GITHUBURL = '&githubURL=https%3A%2F%2Fgithub.com%2F' + REPO
let github_config = JSON.parse(require('fs').readFileSync('./github.json','utf-8'));
if (github_config?.token) {
exports['beforeEach'] = function(browser) {
browser.setCookie({
name: '__github_key',
value: github_config.token,
path: '/'
});
}
} else {
throw new Error('need ./github.js with {token:"..."}')
}
exports['test import Github'] = async function (browser) {
await browser.url(`${IDEURL}?${QS_GITHUBURL}`)
.waitForElementNotPresent('#step-0')
.waitForElementNotVisible('#compile_spinner', time = 10000)
.waitForElementNotVisible('#error_alert')
.waitForElementVisible('#emuscreen')
.waitForElementVisible('.emuvideo')
.url(`${IDEURL}?repo=${REPO}`)
browser.expect.url().to.contain(`platform=${PLATFORM}`)
browser.expect.url().to.contain(`file=${FILE}`)
browser.expect.url().to.contain(`repo=${REPO.replace('/', '%2F')}`)
await browser.url(`${IDEURL}?`)
.waitForElementNotVisible('#error_alert')
.waitForElementVisible('#emuscreen')
.waitForElementVisible('.emuvideo')
browser.expect.url().to.contain(`platform=${PLATFORM}`)
browser.expect.url().to.contain(`file=${FILE}`)
browser.expect.url().to.contain(`repo=${REPO.replace('/', '%2F')}`)
await browser.url(`${IDEURL}?repo=${REPO}`)
.waitForElementNotVisible('#error_alert')
.waitForElementVisible('#emuscreen')
.waitForElementVisible('.emuvideo')
browser.expect.url().to.contain(`platform=${PLATFORM}`)
browser.expect.url().to.contain(`file=${FILE}`)
browser.expect.url().to.contain(`repo=${REPO.replace('/', '%2F')}`)
await browser.url(`${IDEURL}?platform=${PLATFORM}`)
.waitForElementNotVisible('#error_alert')
.waitForElementVisible('#emuscreen')
.waitForElementVisible('.emuvideo')
browser.expect.url().to.contain(`platform=${PLATFORM}`)
browser.expect.url().to.contain(`file=${FILE}`)
browser.expect.url().to.contain(`repo=${REPO.replace('/', '%2F')}`)
await browser.url(`${IDEURL}?platform=${PLATFORM}&file=${PRESETFILE}`)
.waitForElementNotVisible('#error_alert')
.waitForElementVisible('#emuscreen')
.waitForElementVisible('.emuvideo')
browser.expect.url().to.contain(`platform=${PLATFORM}`)
browser.expect.url().to.contain(`file=${PRESETFILE}`)
browser.expect.url().to.not.contain(`repo=${REPO.replace('/', '%2F')}`)
}