commit
655ae40eac
@ -0,0 +1,178 @@ |
|||||||
|
'use strict' |
||||||
|
import { NightwatchBrowser } from 'nightwatch' |
||||||
|
import init from '../helpers/init' |
||||||
|
|
||||||
|
module.exports = { |
||||||
|
'@disabled': true, |
||||||
|
before: function (browser: NightwatchBrowser, done: VoidFunction) { |
||||||
|
init(browser, done) |
||||||
|
}, |
||||||
|
|
||||||
|
'Should create semaphore workspace template #group1 #group2 #group3 #group4': function (browser: NightwatchBrowser) { |
||||||
|
browser |
||||||
|
.clickLaunchIcon('filePanel') |
||||||
|
.click('*[data-id="workspacesMenuDropdown"]') |
||||||
|
.click('*[data-id="workspacecreate"]') |
||||||
|
.waitForElementVisible('*[data-id="modalDialogCustomPromptTextCreate"]') |
||||||
|
.waitForElementVisible('[data-id="fileSystemModalDialogModalFooter-react"] > button') |
||||||
|
.click('select[id="wstemplate"]') |
||||||
|
.click('select[id="wstemplate"] option[value=semaphore]') |
||||||
|
.waitForElementPresent('[data-id="fileSystemModalDialogModalFooter-react"] .modal-ok') |
||||||
|
.execute(function () { (document.querySelector('[data-id="fileSystemModalDialogModalFooter-react"] .modal-ok') as HTMLElement).click() }) |
||||||
|
.pause(100) |
||||||
|
.waitForElementVisible('*[data-id="treeViewLitreeViewItemcircuits"]') |
||||||
|
.waitForElementVisible('*[data-id="treeViewLitreeViewItemcircuits/semaphore.circom"]') |
||||||
|
.waitForElementVisible('*[data-id="treeViewLitreeViewItemscripts"]') |
||||||
|
.waitForElementVisible('*[data-id="treeViewLitreeViewItemscripts/run_setup.ts"]') |
||||||
|
.waitForElementVisible('*[data-id="treeViewLitreeViewItemtemplates"]') |
||||||
|
.waitForElementVisible('*[data-id="treeViewLitreeViewItemtemplates/groth16_verifier.sol.ejs"]') |
||||||
|
}, |
||||||
|
'Should compile a simple circuit using editor play button #group1': function (browser: NightwatchBrowser) { |
||||||
|
browser |
||||||
|
.click('[data-id="treeViewLitreeViewItemcircuits/simple.circom"]') |
||||||
|
.waitForElementPresent('[data-path="Semaphore - 1/circuits/simple.circom"]') |
||||||
|
.waitForElementVisible('[data-path="Semaphore - 1/circuits/simple.circom"]') |
||||||
|
.click('[data-id="play-editor"]') |
||||||
|
.waitForElementPresent('[data-id="treeViewLitreeViewItemcircuits/.bin/simple.wasm"]') |
||||||
|
.waitForElementVisible('[data-id="treeViewLitreeViewItemcircuits/.bin/simple.wasm"]') |
||||||
|
}, |
||||||
|
'Should compute a witness for a simple circuit #group1': function (browser: NightwatchBrowser) { |
||||||
|
browser |
||||||
|
.clickLaunchIcon('circuit-compiler') |
||||||
|
.frame(0) |
||||||
|
.waitForElementVisible('[data-id="witness_toggler"]') |
||||||
|
.click('[data-id="witness_toggler"]') |
||||||
|
.waitForElementVisible('[data-id="compute_witness_btn"]') |
||||||
|
.waitForElementVisible('[data-id="circuit_input_a"]') |
||||||
|
.waitForElementVisible('[data-id="circuit_input_b"]') |
||||||
|
.setValue('[data-id="circuit_input_a"]', '1') |
||||||
|
.setValue('[data-id="circuit_input_b"]', '2') |
||||||
|
.click('[data-id="compute_witness_btn"]') |
||||||
|
.frameParent() |
||||||
|
.clickLaunchIcon('filePanel') |
||||||
|
.waitForElementPresent('[data-id="treeViewLitreeViewItemcircuits/.bin/simple.wtn"]') |
||||||
|
.waitForElementVisible('[data-id="treeViewLitreeViewItemcircuits/.bin/simple.wtn"]') |
||||||
|
}, |
||||||
|
'Should compile a simple circuit using compile button in circom plugin #group2': function (browser: NightwatchBrowser) { |
||||||
|
browser |
||||||
|
.click('[data-id="treeViewLitreeViewItemcircuits/simple.circom"]') |
||||||
|
.waitForElementPresent('[data-path="Semaphore - 1/circuits/simple.circom"]') |
||||||
|
.waitForElementVisible('[data-path="Semaphore - 1/circuits/simple.circom"]') |
||||||
|
.clickLaunchIcon('circuit-compiler') |
||||||
|
.frame(0) |
||||||
|
.waitForElementPresent('button[data-id="compile_circuit_btn"]') |
||||||
|
.waitForElementVisible('button[data-id="compile_circuit_btn"]') |
||||||
|
.click('button[data-id="compile_circuit_btn"]') |
||||||
|
.frameParent() |
||||||
|
.clickLaunchIcon('filePanel') |
||||||
|
.waitForElementPresent('[data-id="treeViewLitreeViewItemcircuits/.bin/simple.wasm"]') |
||||||
|
.waitForElementVisible('[data-id="treeViewLitreeViewItemcircuits/.bin/simple.wasm"]') |
||||||
|
}, |
||||||
|
'Should generate R1CS for a simple circuit #group2': function (browser: NightwatchBrowser) { |
||||||
|
browser |
||||||
|
.clickLaunchIcon('circuit-compiler') |
||||||
|
.frame(0) |
||||||
|
.waitForElementPresent('button[data-id="generate_r1cs_btn"]') |
||||||
|
.waitForElementVisible('button[data-id="generate_r1cs_btn"]') |
||||||
|
.click('button[data-id="generate_r1cs_btn"]') |
||||||
|
.frameParent() |
||||||
|
.clickLaunchIcon('filePanel') |
||||||
|
.waitForElementPresent('[data-id="treeViewLitreeViewItemcircuits/.bin/simple.r1cs"]') |
||||||
|
.waitForElementVisible('[data-id="treeViewLitreeViewItemcircuits/.bin/simple.r1cs"]') |
||||||
|
}, |
||||||
|
'Should compile a simple circuit using CTRL + S from the editor #group3': function (browser: NightwatchBrowser) { |
||||||
|
browser |
||||||
|
.click('[data-id="treeViewLitreeViewItemcircuits/simple.circom"]') |
||||||
|
.waitForElementPresent('[data-path="Semaphore - 1/circuits/simple.circom"]') |
||||||
|
.waitForElementVisible('[data-path="Semaphore - 1/circuits/simple.circom"]') |
||||||
|
.perform(function () { |
||||||
|
const actions = this.actions({async: true}) |
||||||
|
|
||||||
|
return actions.keyDown(this.Keys.CONTROL).sendKeys('s') |
||||||
|
}) |
||||||
|
.waitForElementPresent('[data-id="treeViewLitreeViewItemcircuits/.bin/simple.wasm"]') |
||||||
|
.waitForElementVisible('[data-id="treeViewLitreeViewItemcircuits/.bin/simple.wasm"]') |
||||||
|
}, |
||||||
|
'Should display warnings for compiled circuit without pragma version #group4': function (browser: NightwatchBrowser) { |
||||||
|
browser |
||||||
|
.click('[data-id="treeViewLitreeViewItemcircuits/simple.circom"]') |
||||||
|
.waitForElementPresent('[data-path="Semaphore - 1/circuits/simple.circom"]') |
||||||
|
.waitForElementVisible('[data-path="Semaphore - 1/circuits/simple.circom"]') |
||||||
|
.setEditorValue(warningCircuit) |
||||||
|
.clickLaunchIcon('circuit-compiler') |
||||||
|
.frame(0) |
||||||
|
.waitForElementPresent('button[data-id="compile_circuit_btn"]') |
||||||
|
.waitForElementVisible('button[data-id="compile_circuit_btn"]') |
||||||
|
.click('button[data-id="compile_circuit_btn"]') |
||||||
|
.waitForElementPresent('[data-id="circuit_feedback"]') |
||||||
|
.waitForElementVisible('[data-id="circuit_feedback"]') |
||||||
|
.assert.hasClass('[data-id="circuit_feedback"]', 'alert-warning') |
||||||
|
.waitForElementContainsText('[data-id="circuit_feedback"]', 'File circuits/simple.circom does not include pragma version. Assuming pragma version (2, 1, 5)') |
||||||
|
}, |
||||||
|
'Should hide/show warnings for compiled circuit #group4': function (browser: NightwatchBrowser) { |
||||||
|
browser |
||||||
|
.click('[data-id="hide_circuit_warnings_checkbox_input"]') |
||||||
|
.waitForElementNotPresent('[data-id="circuit_feedback"]') |
||||||
|
.click('[data-id="hide_circuit_warnings_checkbox_input"]') |
||||||
|
.waitForElementVisible('[data-id="circuit_feedback"]') |
||||||
|
.waitForElementContainsText('[data-id="circuit_feedback"]', 'File circuits/simple.circom does not include pragma version. Assuming pragma version (2, 1, 5)') |
||||||
|
}, |
||||||
|
'Should display error for invalid circuit #group4': function (browser: NightwatchBrowser) { |
||||||
|
browser |
||||||
|
.frameParent() |
||||||
|
.setEditorValue(errorCircuit) |
||||||
|
.frame(0) |
||||||
|
.waitForElementPresent('button[data-id="compile_circuit_btn"]') |
||||||
|
.waitForElementVisible('button[data-id="compile_circuit_btn"]') |
||||||
|
.click('button[data-id="compile_circuit_btn"]') |
||||||
|
.waitForElementPresent('[data-id="circuit_feedback"]') |
||||||
|
.assert.hasClass('[data-id="circuit_feedback"]', 'alert-danger') |
||||||
|
.waitForElementContainsText('[data-id="circuit_feedback"]', 'No main specified in the project structure') |
||||||
|
}, |
||||||
|
'Should auto compile circuit #group4': function (browser: NightwatchBrowser) { |
||||||
|
browser |
||||||
|
.click('[data-id="auto_compile_circuit_checkbox_input"]') |
||||||
|
.frameParent() |
||||||
|
.setEditorValue(validCircuit) |
||||||
|
.frame(0) |
||||||
|
.waitForElementNotPresent('[data-id="circuit_feedback"]') |
||||||
|
.frameParent() |
||||||
|
.clickLaunchIcon('filePanel') |
||||||
|
.waitForElementPresent('[data-id="treeViewLitreeViewItemcircuits/.bin/simple.wasm"]') |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
const warningCircuit = ` |
||||||
|
template Multiplier2() { |
||||||
|
signal input a; |
||||||
|
signal input b; |
||||||
|
signal output c; |
||||||
|
c <== a*b; |
||||||
|
} |
||||||
|
|
||||||
|
component main = Multiplier2(); |
||||||
|
` |
||||||
|
|
||||||
|
const errorCircuit = ` |
||||||
|
pragma circom 2.0.0; |
||||||
|
|
||||||
|
template Multiplier2() { |
||||||
|
signal input a; |
||||||
|
signal input b; |
||||||
|
signal output c; |
||||||
|
c <== a*b; |
||||||
|
} |
||||||
|
` |
||||||
|
|
||||||
|
const validCircuit = ` |
||||||
|
pragma circom 2.0.0; |
||||||
|
|
||||||
|
template Multiplier2() { |
||||||
|
signal input a; |
||||||
|
signal input b; |
||||||
|
signal output c; |
||||||
|
c <== a*b; |
||||||
|
} |
||||||
|
|
||||||
|
component main = Multiplier2(); |
||||||
|
` |
Loading…
Reference in new issue