spiffworkflow-frontend/cypress/e2e/process_instances.cy.js

122 lines
4.4 KiB
JavaScript
Raw Normal View History

describe('process-instances', () => {
beforeEach(() => {
cy.visit('/');
cy.contains('acceptance-tests-group-one').click();
cy.contains('acceptance-tests-model-1').click();
});
it('can create a new instance and can modify', () => {
const originalDmnOutputForKevin = "Very wonderful";
const newDmnOutputForKevin = "The new wonderful";
const dmnOutputForDan = "pretty wonderful";
const originalPythonScript = 'person = "Kevin"';
const newPythonScript = 'person = "Dan"';
const dmnFile = "awesome_decision.dmn";
const bpmnFile = "process_model_one.bpmn";
cy.contains(originalDmnOutputForKevin).should('not.exist');;
cy.runPrimaryBpmnFile(originalDmnOutputForKevin);
// Change dmn
cy.contains(dmnFile).click();
cy.contains(`Process Model File: ${dmnFile}`);
updateDmnText(originalDmnOutputForKevin, newDmnOutputForKevin);
cy.contains('acceptance-tests-model-1').click();
cy.runPrimaryBpmnFile(newDmnOutputForKevin);
cy.contains(dmnFile).click();
cy.contains(`Process Model File: ${dmnFile}`);
updateDmnText(newDmnOutputForKevin, originalDmnOutputForKevin);
cy.contains('acceptance-tests-model-1').click();
cy.runPrimaryBpmnFile(originalDmnOutputForKevin);
// Change bpmn
cy.contains(bpmnFile).click();
cy.contains(`Process Model File: ${bpmnFile}`);
updateBpmnPythonScript(newPythonScript, bpmnFile);
cy.contains('acceptance-tests-model-1').click();
cy.runPrimaryBpmnFile(dmnOutputForDan);
cy.contains(bpmnFile).click();
cy.contains(`Process Model File: ${bpmnFile}`);
updateBpmnPythonScript(originalPythonScript, bpmnFile);
cy.contains('acceptance-tests-model-1').click();
cy.runPrimaryBpmnFile(originalDmnOutputForKevin);
});
it('can create a new instance and can modify with monaco text editor', () => {
const dmnOutputForKevin = "Very wonderful";
const dmnOutputForMike = "Powerful wonderful";
const originalPythonScript = 'person = "Kevin"';
const newPythonScript = 'person = "Mike"';
const bpmnFile = "process_model_one.bpmn";
// Change bpmn
cy.contains(bpmnFile).click();
cy.contains(`Process Model File: ${bpmnFile}`);
updateBpmnPythonScriptWithMonaco(newPythonScript, bpmnFile);
cy.contains('acceptance-tests-model-1').click();
cy.runPrimaryBpmnFile(dmnOutputForMike);
cy.contains(bpmnFile).click();
cy.contains(`Process Model File: ${bpmnFile}`);
updateBpmnPythonScriptWithMonaco(originalPythonScript, bpmnFile);
cy.contains('acceptance-tests-model-1').click();
cy.runPrimaryBpmnFile(dmnOutputForKevin);
});
it('can paginate items', () => {
// make sure we have some process instances
cy.runPrimaryBpmnFile('Very wonderful');
cy.runPrimaryBpmnFile('Very wonderful');
cy.runPrimaryBpmnFile('Very wonderful');
cy.runPrimaryBpmnFile('Very wonderful');
cy.runPrimaryBpmnFile('Very wonderful');
cy.contains('Process Instances').click();
cy.basicPaginationTest();
})
})
function updateDmnText(oldText, newText, elementId="wonderful_process", dmnFile="awesome_decision.dmn") {
// this will break if there are more elements added to the drd
cy.get(`g[data-element-id=${elementId}]`).click().should('exist');
cy.get('.dmn-icon-decision-table').click();
cy.contains(oldText).clear().type(`"${newText}"`);
// wait for a little bit for the xml to get set before saving
cy.wait(500);
cy.contains('Save').click();
}
function updateBpmnPythonScript(pythonScript, bpmnFile, elementId="process_script") {
cy.get(`g[data-element-id=${elementId}]`).click().should('exist');
cy.contains('SpiffWorkflow Properties').click();
cy.get('#bio-properties-panel-pythonScript').clear().type(pythonScript);
// wait for a little bit for the xml to get set before saving
cy.wait(500);
cy.contains('Save').click();
}
function updateBpmnPythonScriptWithMonaco(pythonScript, bpmnFile, elementId="process_script") {
cy.get(`g[data-element-id=${elementId}]`).click().should('exist');
cy.contains('SpiffWorkflow Properties').click();
cy.contains('Launch Editor').click();
cy.contains("Loading...").should('not.exist');
cy.get('.monaco-editor textarea:first')
.click()
.focused() // change subject to currently focused element
.type('{ctrl}a')
.type(pythonScript)
cy.contains('Close').click();
// wait for a little bit for the xml to get set before saving
cy.wait(500);
cy.contains('Save').click();
}