UNPKG

test-scribe

Version:

Your sidekick for analog machine development. Run machines interactively and generate automated test scripts based on the outcome.

247 lines (190 loc) 8.73 kB
// $(function (){ // // initially hide all "configure-section"s // $('.configure-section').hide(); // $(".dropdown-menu li a").click(function(){ // // Update display // var friendlyName = $(this).text(); // $(".btn:first-child").text(friendlyName); // $(".btn:first-child").val(friendlyName); // // Set up configure sections // var identity = $(this).attr('data-identity'); // // Setup the appropriate "configure-section" // var $configureSection = $('.configure-section.'+identity); // // Hide any other visible "configure-section"s // $('.configure-section').hide(); // // Hide inputs which are known to be provided by the server // // $configureSection.find('.preview-action-input-form-group-manifest').hide(); // // $configureSection.find('.preview-action-input-form-group-library').hide(); // // $configureSection.find('.preview-action-input-form-group-circuitInputs').hide(); // // $configureSection.find('.preview-action-input-form-group-circuitExits').hide(); // // Show this one // $configureSection.show(); // // Remember a reference to its `preview-results` element, but hide it for now // var $previewResults = $configureSection.find('.preview-results'); // $previewResults.hide(); // // And set up a submit event for it // $configureSection.find('form').off('submit'); // $configureSection.find('form').submit(function (e){ // e.preventDefault(); // // Disable "run" button and mark it w/ a loading state // $configureSection.find('.run-btn').addClass('running'); // $configureSection.find('.run-btn').prop('disabled',true); // $configureSection.find('.run-btn').text('Running machine...'); // $previewResults.hide(); // // console.log('Running "%s"...', identity); // // console.log( $( this ).serializeArray() ); // var configValues = $( this ).serializeArray(); // // console.log('configValues ==> ',configValues); // $.post('/machinepreview/'+identity, {config: JSON.stringify(configValues)}, function (data, jqxhr){ // // console.log('Done!'); // console.log('result: ', data); // // Re-enable "run" button and remove the loading state // $configureSection.find('.run-btn').removeClass('running'); // $configureSection.find('.run-btn').prop('disabled',false); // $configureSection.find('.run-btn').text('Run'); // // // // Now show the results section, populated with the data we got from the server response // // // // display outcome // var $exit = $previewResults.find('.exit'); // $exit.text(data.exit); // // display output data, if relevant // var $pre = $previewResults.find('pre'); // var $typeMetadata = $previewResults.find('.type-metadata'); // if (!data.void) { // // save json value // $previewResults.find('.json-value').val(data.jsonValue); // // save "void"-ness // $previewResults.find('.is-void').val(''); // // parse json data in 'jsonValue' (unless this is void) // try { // data.jsonValue = JSON.parse(data.jsonValue); // } // catch (e) { // console.error('Failed to parse jsonValue in response. Error details:',e); // } // // display result and its type // var displayResult = data.inspectedValue; // $pre.show(); // $pre.text(displayResult); // var resultType = typeof data.jsonValue; // if (resultType === 'object') { // if (data.jsonValue.length) { // resultType = 'array'; // } // else resultType = 'dictionary'; // } // $typeMetadata.show(); // $typeMetadata.text(resultType); // } // else { // // save "void"-ness // $previewResults.find('.is-void').val('true'); // $pre.hide(); // } // $previewResults.show(); // // Set up ACE editors for test lifecycle functions // // (i.e. "before" and "after" in mocha) // var beforeAceEditor = setupAceEditor('before-editor-'+identity); // var afterAceEditor = setupAceEditor('after-editor-'+identity); // var $saveAsTestButton = $previewResults.find('[data-purpose="saveAsTest"]'); // // TODO: if JSON test already exists for these inputs, style+label the button accordingly: // if (false) { // // TODO: If old test outcome and return value is exactly the same, reflect that // // (potentially even display the previously-saved outcome + return value) // $saveAsTestButton.removeClass('btn-primary'); // $saveAsTestButton.removeClass('btn-warning'); // if (false) { // $saveAsTestButton.text('Overwrite previous test?'); // $saveAsTestButton.addClass('btn-warning'); // } // else { // $saveAsTestButton.text('Test already saved w/ these input values...'); // $saveAsTestButton.addClass('btn-success'); // } // } // // Reset style/text of saveAsTest button // $saveAsTestButton.text('Save as Test'); // $saveAsTestButton.removeClass('btn-success'); // $saveAsTestButton.addClass('btn-primary'); // // Now set up a click event for the "Save as Test" button. // $saveAsTestButton.off('click'); // $saveAsTestButton.on('click', function (){ // // get outcome // // var $exit = $previewResults.find('.exit'); // // var outcome = $exit.text(); // // and output data, if relevant // // var isVoid = !!$previewResults.find('.is-void').val(); // // var json = $previewResults.find('.json-value').val(); // var outcome = data.exit; // var isVoid = data.void; // var json = data.jsonValue; // console.log('void?', isVoid); // console.log('json?', json); // console.log('->',outcome); // console.log('configValues',configValues); // // Extract before and after functions, if provided. // var beforeFnStr = beforeAceEditor.getValue(); // var afterFnStr = afterAceEditor.getValue(); // if (beforeFnStr) { // beforeFnStr = wrapLifecycleFn(beforeFnStr); // } // if (afterFnStr){ // afterFnStr = wrapLifecycleFn(afterFnStr); // } // /** // * helper fn to wrap stringified fn in fn signature // * @param {[type]} stringifiedFn [description] // * @return {[type]} [description] // */ // function wrapLifecycleFn(stringifiedFn){ // stringifiedFn = 'function (done){\n' + stringifiedFn; // stringifiedFn += '\n}'; // return stringifiedFn; // } // console.log('beforeFnStr', beforeFnStr); // console.log('afterFnStr',afterFnStr); // // TODO: show loading state // // build and send request // var requestData = { // using: JSON.stringify(configValues), // outcome: outcome, // }; // if (!isVoid) { // requestData.returns = JSON.stringify(json); // } // if (beforeFnStr) { // requestData.before = beforeFnStr; // } // if (afterFnStr) { // requestData.after = afterFnStr; // } // var jqRequest = $.ajax({ // type: 'PUT', // url: '/preview/' + identity + '/test', // data: requestData, // dataType: 'json' // }); // // jqRequest.done(function (data, textstatus,jqxhr){ // // console.log('!!!!!!!'); // // }); // // jqRequest.then(function(){ // // console.log('then'); // // }); // // jqRequest.success(function(){ // // console.log('success'); // // }); // jqRequest.always(function (data, textstatus,jqxhr){ // console.log('finished saving test!',jqxhr.statusCode, data); // // TODO: hide loading state // // show "Test saved (check)" status output // $saveAsTestButton.text('Saved!'); // $saveAsTestButton.removeClass('btn-primary'); // $saveAsTestButton.addClass('btn-success'); // }); // }); // }); // return false; // }); // }); // });