nadesiko3
Version:
Japanese Programming Language
70 lines (66 loc) • 2.47 kB
JavaScript
const assert = require('chai').assert
describe('bundled test', () => {
it('version', () => {
const els = document.getElementsByClassName('version-component')
if (els.length > 0) {
assert.ok(/日本語プログラミング言語「なでしこ3」/.test(els[0].innerHTML), 'notfound "日本語プログラミング言語「なでしこ3」" in version-component')
} else {
assert.fail('no element has version-component class')
}
})
describe('editor', () => {
let ta = null
let el = null
let run = null
let rslt = null
it('textarea default', () => {
const els = document.getElementsByClassName('editor-component')
if (els.length > 0) {
el = els[0]
ta = el.querySelector('.nako3_editor_code')
if (ta) {
assert.ok(/「こんにちは!」と表示。/.test(ta.innerText), 'HTML要素が文字列"「こんにちは!」と表示。"を含みません。')
} else {
assert.fail('no element has src class and not has src_read')
}
} else {
assert.fail('no element has editor-component class')
}
})
it('run', () => {
run = Array.from(el.querySelectorAll('button.default_button')).find(e => e.textContent === '実行')
if (run) {
const evt = new MouseEvent('click', {
view: window,
bubbles: true,
cancelable: true,
button: 0,
buttons: 1
})
run.dispatchEvent(evt)
return new Promise((resolve, reject) => {
setTimeout(() => {
try {
const rsltHead = Array.from(el.querySelectorAll('.edit_head')).find(e => e.textContent === '実行結果')
if (rsltHead) {
rslt = rsltHead.parentNode.querySelector('.info')
if (rslt) {
assert.ok(/こんにちは!.+9/m.test(rslt.innerHTML), '文字列「こんにちは!」と「9」が出力エリアに表示されていません。')
resolve()
} else {
assert.fail('.infoが存在しません。')
}
} else {
assert.fail('.edit_headを見つけられませんでした。')
}
} catch (err) {
reject(err)
}
}, 500)
})
} else {
assert.fail('no element 実行 button-component class')
}
})
})
})