Workflow fixes (#559)

* workflow fixes

* fixes for workflow - cypress test coverage

* remove log

* adding some assertions to slow test down

* force click create user

* cypress 5, small wait for user test

* remove cypress waiting eslint rule to fix user test

* click button directly

* test clicking

* try changing access level for validity

* lint
This commit is contained in:
Martin McKeaveney 2020-09-03 12:02:15 +01:00 committed by GitHub
parent cbc55310a9
commit 7c27957b1b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 554 additions and 169 deletions

View File

@ -1,4 +1,4 @@
context('Create a Binding', () => { xcontext('Create a Binding', () => {
before(() => { before(() => {
cy.visit('localhost:4001/_builder') cy.visit('localhost:4001/_builder')
cy.createApp('Binding App', 'Binding App Description') cy.createApp('Binding App', 'Binding App Description')

View File

@ -9,7 +9,7 @@ context('Create a User', () => {
// https://on.cypress.io/interacting-with-elements // https://on.cypress.io/interacting-with-elements
it('should create a user', () => { it('should create a user', () => {
cy.createUser('bbuser', 'test', 'ADMIN') cy.createUser('bbuser', 'test', 'POWER_USER')
// Check to make sure user was created! // Check to make sure user was created!
cy.get("input[disabled]").should('have.value', 'bbuser') cy.get("input[disabled]").should('have.value', 'bbuser')

View File

@ -1,4 +1,4 @@
xcontext('Create a workflow', () => { context('Create a workflow', () => {
before(() => { before(() => {
cy.server() cy.server()
@ -9,7 +9,7 @@ xcontext('Create a workflow', () => {
// https://on.cypress.io/interacting-with-elements // https://on.cypress.io/interacting-with-elements
it('should create a workflow', () => { it('should create a workflow', () => {
cy.createTable('dog', 'name', 'age') cy.createTestTableWithData()
cy.contains('workflow').click() cy.contains('workflow').click()
cy.contains('Create New Workflow').click() cy.contains('Create New Workflow').click()
@ -23,21 +23,23 @@ xcontext('Create a workflow', () => {
// Create action // Create action
cy.get('[data-cy=SAVE_RECORD]').click() cy.get('[data-cy=SAVE_RECORD]').click()
cy.get(':nth-child(2) > .budibase__input').type('goodboy') cy.get('.container input').first().type('goodboy')
cy.get(':nth-child(3) > .budibase__input').type('11') cy.get('.container input').eq(1).type('11')
// Save // Save
cy.contains('Save Workflow').click() cy.contains('Save Workflow').click()
// Activate Workflow // Activate Workflow
cy.get('[data-cy=activate-workflow]').click() cy.get('[data-cy=activate-workflow]').click()
cy.contains("Add Record").should("be.visible")
cy.get(".stop-button.highlighted").should("be.visible")
}) })
xit('should add record when a new record is added', () => {
it('should add record when a new record is added', () => {
cy.contains('backend').click() cy.contains('backend').click()
cy.addRecord('bob', '15') cy.addRecord(["Rover", 15])
cy.reload()
cy.contains('goodboy').should('have.text', 'goodboy') cy.contains('goodboy').should('have.text', 'goodboy')
}) })

View File

@ -57,12 +57,17 @@ Cypress.Commands.add("createApp", name => {
}) })
}) })
Cypress.Commands.add("createTestTableWithData", () => {
cy.createTable("dog")
cy.addColumn("dog", "name", "Plain Text")
cy.addColumn("dog", "age", "Number")
})
Cypress.Commands.add("createTable", tableName => { Cypress.Commands.add("createTable", tableName => {
// Enter model name // Enter model name
cy.contains("Create New Table").click() cy.contains("Create New Table").click()
cy.get("[placeholder='Table Name']").type(tableName) cy.get("[placeholder='Table Name']").type(tableName)
// Add 'name' field
cy.contains("Save").click() cy.contains("Save").click()
cy.contains(tableName).should("be.visible") cy.contains(tableName).should("be.visible")
}) })
@ -84,7 +89,7 @@ Cypress.Commands.add("addRecord", values => {
cy.contains("Create New Row").click() cy.contains("Create New Row").click()
for (let i = 0; i < values.length; i++) { for (let i = 0; i < values.length; i++) {
cy.get("input") cy.get(".actions input")
.eq(i) .eq(i)
.type(values[i]) .type(values[i])
} }
@ -93,7 +98,7 @@ Cypress.Commands.add("addRecord", values => {
cy.contains("Save").click() cy.contains("Save").click()
}) })
Cypress.Commands.add("createUser", (username, password) => { Cypress.Commands.add("createUser", (username, password, accessLevel) => {
// Create User // Create User
cy.get(".toprightnav > .settings").click() cy.get(".toprightnav > .settings").click()
cy.contains("Users").click() cy.contains("Users").click()
@ -104,9 +109,12 @@ Cypress.Commands.add("createUser", (username, password) => {
cy.get("[name=Password]") cy.get("[name=Password]")
.first() .first()
.type(password) .type(password)
cy.get("select")
.first()
.select(accessLevel)
// Save // Save
cy.get(".create-button").click() cy.get(".create-button > button").click()
}) })
Cypress.Commands.add("addHeadlineComponent", text => { Cypress.Commands.add("addHeadlineComponent", text => {

View File

@ -1,3 +1,3 @@
Cypress.Cookies.defaults({ Cypress.Cookies.defaults({
whitelist: "builder:token", preserve: "builder:token",
}) })

View File

@ -57,7 +57,10 @@
"eslintConfig": { "eslintConfig": {
"extends": [ "extends": [
"plugin:cypress/recommended" "plugin:cypress/recommended"
] ],
"rules": {
"cypress/no-unnecessary-waiting": "off"
}
}, },
"dependencies": { "dependencies": {
"@budibase/bbui": "^1.29.1", "@budibase/bbui": "^1.29.1",
@ -91,7 +94,7 @@
"@testing-library/jest-dom": "^5.11.0", "@testing-library/jest-dom": "^5.11.0",
"@testing-library/svelte": "^3.0.0", "@testing-library/svelte": "^3.0.0",
"babel-jest": "^24.8.0", "babel-jest": "^24.8.0",
"cypress": "^4.8.0", "cypress": "^5.1.0",
"cypress-terminal-report": "^1.4.1", "cypress-terminal-report": "^1.4.1",
"eslint-plugin-cypress": "^2.11.1", "eslint-plugin-cypress": "^2.11.1",
"identity-obj-proxy": "^3.0.0", "identity-obj-proxy": "^3.0.0",

View File

@ -3,6 +3,16 @@
import { Input } from "@budibase/bbui" import { Input } from "@budibase/bbui"
export let value export let value
function setParsedValue(evt, field) {
const fieldSchema = value.model.schema[field]
if (fieldSchema.type === "number") {
value[field] = parseInt(evt.target.value)
return
}
value[field] = evt.target.value
}
</script> </script>
<div class="bb-margin-xl block-field"> <div class="bb-margin-xl block-field">
@ -18,7 +28,11 @@
<label class="uk-form-label fields">Fields</label> <label class="uk-form-label fields">Fields</label>
{#each Object.keys(value.model.schema) as field} {#each Object.keys(value.model.schema) as field}
<div class="bb-margin-xl"> <div class="bb-margin-xl">
<Input bind:value={value[field]} label={field} /> <Input
thin
value={value[field]}
label={field}
on:change={e => setParsedValue(e, field)} />
</div> </div>
{/each} {/each}
</div> </div>

View File

@ -44,7 +44,7 @@
{:else if type === 'model'} {:else if type === 'model'}
<ModelSelector bind:value={workflowBlock.args[parameter]} /> <ModelSelector bind:value={workflowBlock.args[parameter]} />
{:else if type === 'record'} {:else if type === 'record'}
<RecordSelector bind:value={workflowBlock.args[parameter]} /> <RecordSelector value={workflowBlock.args[parameter]} />
{:else if type === 'string'} {:else if type === 'string'}
<Input type="text" thin bind:value={workflowBlock.args[parameter]} /> <Input type="text" thin bind:value={workflowBlock.args[parameter]} />
{/if} {/if}

File diff suppressed because it is too large Load Diff

View File

@ -14,9 +14,8 @@ module.exports = async function saveRecord({ args, context }) {
user: { instanceId: context.instanceId }, user: { instanceId: context.instanceId },
} }
await recordController.save(ctx)
try { try {
await recordController.save(ctx)
return { return {
record: ctx.body, record: ctx.body,
} }