focalboard/webapp/cypress/integration/createBoard.ts

181 lines
6.6 KiB
TypeScript
Raw Normal View History

[GH-42] Cypress tests for login actions (#1679) * Testing API added to server: - registered only if `enableTestingAPI` is set to `true` in the config file - has only one route `test/reset` - reset clears the tables in db for blocks, users, sessions - functions `DeleteAllBlocks` and `DeleteAllUsers` added to `Store` interface - new functions implemented for `SQLStore` * Cypress tests (initial version) for login actions added: - redirect to login page, - register user, - test for loading home page deleted, - allow js in `tsconfig.json` for cypress tests. * Cypress tests for login actions: - check that main page with workspace is visible after registration, - initial version of test for login of register user. * Cypress tests for login actions: - function for checking that workspace is available added, - functions for login and logout added, - test for password change added, - session parameters added to server config for cypress testing. * Switch Cypress tests to typescript. * Use ids for inputs instead of placeholder text. * Use cypress request for login without loading login page. * Cypress custom command for login added. * Cypress tests fixed: - new cypress commands for server reset, register/login user - single test for "create and delete board/card" - fixes for `BoardPage` component useEffect callbacks - npm script `runserver-test` doesn't use single user mode * Deletion of all blocks changed: - also deletes blocks from history - public function renamed to DeleteAllBlocksPermanently - code for mocks and public methods generated * Server tests for files fixed on windows. * Cypress tests for the registration of second user via invite link added. * Added `baseUrl` in main `tsconfig.json` (required by cypress configuration). * Cypress test fixed. Comments as well as log messages added. * Log a message if testing API is enabled. * Single cypress test for register/login actions. * Revert changes to server. * More convenient cypress commands: - all API calls made as separate commands - declarations for commands moved to separate global.d.ts file - utility functions moved after test actions in 'Login actions' test
2021-11-22 16:59:01 +01:00
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
describe('Create and delete board / card', () => {
const timestamp = new Date().toLocaleString()
const boardTitle = `Test Board (${timestamp})`
const cardTitle = `Test Card (${timestamp})`
beforeEach(() => {
cy.apiInitServer()
cy.apiResetBoards()
[GH-42] Cypress tests for login actions (#1679) * Testing API added to server: - registered only if `enableTestingAPI` is set to `true` in the config file - has only one route `test/reset` - reset clears the tables in db for blocks, users, sessions - functions `DeleteAllBlocks` and `DeleteAllUsers` added to `Store` interface - new functions implemented for `SQLStore` * Cypress tests (initial version) for login actions added: - redirect to login page, - register user, - test for loading home page deleted, - allow js in `tsconfig.json` for cypress tests. * Cypress tests for login actions: - check that main page with workspace is visible after registration, - initial version of test for login of register user. * Cypress tests for login actions: - function for checking that workspace is available added, - functions for login and logout added, - test for password change added, - session parameters added to server config for cypress testing. * Switch Cypress tests to typescript. * Use ids for inputs instead of placeholder text. * Use cypress request for login without loading login page. * Cypress custom command for login added. * Cypress tests fixed: - new cypress commands for server reset, register/login user - single test for "create and delete board/card" - fixes for `BoardPage` component useEffect callbacks - npm script `runserver-test` doesn't use single user mode * Deletion of all blocks changed: - also deletes blocks from history - public function renamed to DeleteAllBlocksPermanently - code for mocks and public methods generated * Server tests for files fixed on windows. * Cypress tests for the registration of second user via invite link added. * Added `baseUrl` in main `tsconfig.json` (required by cypress configuration). * Cypress test fixed. Comments as well as log messages added. * Log a message if testing API is enabled. * Single cypress test for register/login actions. * Revert changes to server. * More convenient cypress commands: - all API calls made as separate commands - declarations for commands moved to separate global.d.ts file - utility functions moved after test actions in 'Login actions' test
2021-11-22 16:59:01 +01:00
localStorage.setItem('welcomePageViewed', 'true')
})
it('MM-T4274 Create an Empty Board', () => {
cy.visit('/')
cy.contains('+ Add board').should('exist').click()
// Tests for template selector
cy.contains('Select a template').should('exist')
// Some options are present
cy.contains('Meeting Notes').should('exist')
cy.contains('Personal Goals').should('exist')
cy.contains('Project Tasks').should('exist')
// Create empty board
cy.contains('Empty board').should('exist').click()
cy.get('.BoardComponent').should('exist')
cy.get('.Editable.title').invoke('attr', 'placeholder').should('contain', 'Untitled board')
// Change Title
cy.get('.Editable.title').
type('Testing').
type('{enter}').
should('have.value', 'Testing')
})
[GH-42] Cypress tests for login actions (#1679) * Testing API added to server: - registered only if `enableTestingAPI` is set to `true` in the config file - has only one route `test/reset` - reset clears the tables in db for blocks, users, sessions - functions `DeleteAllBlocks` and `DeleteAllUsers` added to `Store` interface - new functions implemented for `SQLStore` * Cypress tests (initial version) for login actions added: - redirect to login page, - register user, - test for loading home page deleted, - allow js in `tsconfig.json` for cypress tests. * Cypress tests for login actions: - check that main page with workspace is visible after registration, - initial version of test for login of register user. * Cypress tests for login actions: - function for checking that workspace is available added, - functions for login and logout added, - test for password change added, - session parameters added to server config for cypress testing. * Switch Cypress tests to typescript. * Use ids for inputs instead of placeholder text. * Use cypress request for login without loading login page. * Cypress custom command for login added. * Cypress tests fixed: - new cypress commands for server reset, register/login user - single test for "create and delete board/card" - fixes for `BoardPage` component useEffect callbacks - npm script `runserver-test` doesn't use single user mode * Deletion of all blocks changed: - also deletes blocks from history - public function renamed to DeleteAllBlocksPermanently - code for mocks and public methods generated * Server tests for files fixed on windows. * Cypress tests for the registration of second user via invite link added. * Added `baseUrl` in main `tsconfig.json` (required by cypress configuration). * Cypress test fixed. Comments as well as log messages added. * Log a message if testing API is enabled. * Single cypress test for register/login actions. * Revert changes to server. * More convenient cypress commands: - all API calls made as separate commands - declarations for commands moved to separate global.d.ts file - utility functions moved after test actions in 'Login actions' test
2021-11-22 16:59:01 +01:00
it('Can create and delete a board and a card', () => {
// Visit a page and create new empty board
[GH-42] Cypress tests for login actions (#1679) * Testing API added to server: - registered only if `enableTestingAPI` is set to `true` in the config file - has only one route `test/reset` - reset clears the tables in db for blocks, users, sessions - functions `DeleteAllBlocks` and `DeleteAllUsers` added to `Store` interface - new functions implemented for `SQLStore` * Cypress tests (initial version) for login actions added: - redirect to login page, - register user, - test for loading home page deleted, - allow js in `tsconfig.json` for cypress tests. * Cypress tests for login actions: - check that main page with workspace is visible after registration, - initial version of test for login of register user. * Cypress tests for login actions: - function for checking that workspace is available added, - functions for login and logout added, - test for password change added, - session parameters added to server config for cypress testing. * Switch Cypress tests to typescript. * Use ids for inputs instead of placeholder text. * Use cypress request for login without loading login page. * Cypress custom command for login added. * Cypress tests fixed: - new cypress commands for server reset, register/login user - single test for "create and delete board/card" - fixes for `BoardPage` component useEffect callbacks - npm script `runserver-test` doesn't use single user mode * Deletion of all blocks changed: - also deletes blocks from history - public function renamed to DeleteAllBlocksPermanently - code for mocks and public methods generated * Server tests for files fixed on windows. * Cypress tests for the registration of second user via invite link added. * Added `baseUrl` in main `tsconfig.json` (required by cypress configuration). * Cypress test fixed. Comments as well as log messages added. * Log a message if testing API is enabled. * Single cypress test for register/login actions. * Revert changes to server. * More convenient cypress commands: - all API calls made as separate commands - declarations for commands moved to separate global.d.ts file - utility functions moved after test actions in 'Login actions' test
2021-11-22 16:59:01 +01:00
cy.visit('/')
cy.uiCreateBoard('Empty board')
[GH-42] Cypress tests for login actions (#1679) * Testing API added to server: - registered only if `enableTestingAPI` is set to `true` in the config file - has only one route `test/reset` - reset clears the tables in db for blocks, users, sessions - functions `DeleteAllBlocks` and `DeleteAllUsers` added to `Store` interface - new functions implemented for `SQLStore` * Cypress tests (initial version) for login actions added: - redirect to login page, - register user, - test for loading home page deleted, - allow js in `tsconfig.json` for cypress tests. * Cypress tests for login actions: - check that main page with workspace is visible after registration, - initial version of test for login of register user. * Cypress tests for login actions: - function for checking that workspace is available added, - functions for login and logout added, - test for password change added, - session parameters added to server config for cypress testing. * Switch Cypress tests to typescript. * Use ids for inputs instead of placeholder text. * Use cypress request for login without loading login page. * Cypress custom command for login added. * Cypress tests fixed: - new cypress commands for server reset, register/login user - single test for "create and delete board/card" - fixes for `BoardPage` component useEffect callbacks - npm script `runserver-test` doesn't use single user mode * Deletion of all blocks changed: - also deletes blocks from history - public function renamed to DeleteAllBlocksPermanently - code for mocks and public methods generated * Server tests for files fixed on windows. * Cypress tests for the registration of second user via invite link added. * Added `baseUrl` in main `tsconfig.json` (required by cypress configuration). * Cypress test fixed. Comments as well as log messages added. * Log a message if testing API is enabled. * Single cypress test for register/login actions. * Revert changes to server. * More convenient cypress commands: - all API calls made as separate commands - declarations for commands moved to separate global.d.ts file - utility functions moved after test actions in 'Login actions' test
2021-11-22 16:59:01 +01:00
// Change board title
cy.log('**Change board title**')
cy.get('.Editable.title').
type(boardTitle).
type('{enter}').
should('have.value', boardTitle)
// Hide and show the sidebar
cy.log('**Hide and show the sidebar**')
cy.get('.sidebarSwitcher').click()
cy.get('.Sidebar .heading').should('not.exist')
cy.get('.Sidebar .show-button').click()
cy.get('.Sidebar .heading').should('exist')
// Rename board view
cy.log('**Rename board view**')
const boardViewTitle = `Test board (${timestamp})`
cy.get(".ViewHeader>.Editable[title='Board view']").should('exist')
cy.get('.ViewHeader>.Editable').
clear().
type(boardViewTitle).
type('{esc}')
cy.get(`.ViewHeader .Editable[title='${boardViewTitle}']`).should('exist')
// Create card
cy.log('**Create card**')
cy.get('.ViewHeader').contains('New').click()
cy.get('.CardDetail').should('exist')
// Change card title
cy.log('**Change card title**')
// eslint-disable-next-line cypress/no-unnecessary-waiting
[GH-42] Cypress tests for login actions (#1679) * Testing API added to server: - registered only if `enableTestingAPI` is set to `true` in the config file - has only one route `test/reset` - reset clears the tables in db for blocks, users, sessions - functions `DeleteAllBlocks` and `DeleteAllUsers` added to `Store` interface - new functions implemented for `SQLStore` * Cypress tests (initial version) for login actions added: - redirect to login page, - register user, - test for loading home page deleted, - allow js in `tsconfig.json` for cypress tests. * Cypress tests for login actions: - check that main page with workspace is visible after registration, - initial version of test for login of register user. * Cypress tests for login actions: - function for checking that workspace is available added, - functions for login and logout added, - test for password change added, - session parameters added to server config for cypress testing. * Switch Cypress tests to typescript. * Use ids for inputs instead of placeholder text. * Use cypress request for login without loading login page. * Cypress custom command for login added. * Cypress tests fixed: - new cypress commands for server reset, register/login user - single test for "create and delete board/card" - fixes for `BoardPage` component useEffect callbacks - npm script `runserver-test` doesn't use single user mode * Deletion of all blocks changed: - also deletes blocks from history - public function renamed to DeleteAllBlocksPermanently - code for mocks and public methods generated * Server tests for files fixed on windows. * Cypress tests for the registration of second user via invite link added. * Added `baseUrl` in main `tsconfig.json` (required by cypress configuration). * Cypress test fixed. Comments as well as log messages added. * Log a message if testing API is enabled. * Single cypress test for register/login actions. * Revert changes to server. * More convenient cypress commands: - all API calls made as separate commands - declarations for commands moved to separate global.d.ts file - utility functions moved after test actions in 'Login actions' test
2021-11-22 16:59:01 +01:00
cy.get('.CardDetail .EditableArea.title').
click().
should('have.focus').
wait(1000).
[GH-42] Cypress tests for login actions (#1679) * Testing API added to server: - registered only if `enableTestingAPI` is set to `true` in the config file - has only one route `test/reset` - reset clears the tables in db for blocks, users, sessions - functions `DeleteAllBlocks` and `DeleteAllUsers` added to `Store` interface - new functions implemented for `SQLStore` * Cypress tests (initial version) for login actions added: - redirect to login page, - register user, - test for loading home page deleted, - allow js in `tsconfig.json` for cypress tests. * Cypress tests for login actions: - check that main page with workspace is visible after registration, - initial version of test for login of register user. * Cypress tests for login actions: - function for checking that workspace is available added, - functions for login and logout added, - test for password change added, - session parameters added to server config for cypress testing. * Switch Cypress tests to typescript. * Use ids for inputs instead of placeholder text. * Use cypress request for login without loading login page. * Cypress custom command for login added. * Cypress tests fixed: - new cypress commands for server reset, register/login user - single test for "create and delete board/card" - fixes for `BoardPage` component useEffect callbacks - npm script `runserver-test` doesn't use single user mode * Deletion of all blocks changed: - also deletes blocks from history - public function renamed to DeleteAllBlocksPermanently - code for mocks and public methods generated * Server tests for files fixed on windows. * Cypress tests for the registration of second user via invite link added. * Added `baseUrl` in main `tsconfig.json` (required by cypress configuration). * Cypress test fixed. Comments as well as log messages added. * Log a message if testing API is enabled. * Single cypress test for register/login actions. * Revert changes to server. * More convenient cypress commands: - all API calls made as separate commands - declarations for commands moved to separate global.d.ts file - utility functions moved after test actions in 'Login actions' test
2021-11-22 16:59:01 +01:00
type(cardTitle).
should('have.value', cardTitle)
// Close card dialog
cy.log('**Close card dialog**')
cy.get('.Dialog Button[title=\'Close dialog\']').
should('be.visible').
click().
wait(500)
[GH-42] Cypress tests for login actions (#1679) * Testing API added to server: - registered only if `enableTestingAPI` is set to `true` in the config file - has only one route `test/reset` - reset clears the tables in db for blocks, users, sessions - functions `DeleteAllBlocks` and `DeleteAllUsers` added to `Store` interface - new functions implemented for `SQLStore` * Cypress tests (initial version) for login actions added: - redirect to login page, - register user, - test for loading home page deleted, - allow js in `tsconfig.json` for cypress tests. * Cypress tests for login actions: - check that main page with workspace is visible after registration, - initial version of test for login of register user. * Cypress tests for login actions: - function for checking that workspace is available added, - functions for login and logout added, - test for password change added, - session parameters added to server config for cypress testing. * Switch Cypress tests to typescript. * Use ids for inputs instead of placeholder text. * Use cypress request for login without loading login page. * Cypress custom command for login added. * Cypress tests fixed: - new cypress commands for server reset, register/login user - single test for "create and delete board/card" - fixes for `BoardPage` component useEffect callbacks - npm script `runserver-test` doesn't use single user mode * Deletion of all blocks changed: - also deletes blocks from history - public function renamed to DeleteAllBlocksPermanently - code for mocks and public methods generated * Server tests for files fixed on windows. * Cypress tests for the registration of second user via invite link added. * Added `baseUrl` in main `tsconfig.json` (required by cypress configuration). * Cypress test fixed. Comments as well as log messages added. * Log a message if testing API is enabled. * Single cypress test for register/login actions. * Revert changes to server. * More convenient cypress commands: - all API calls made as separate commands - declarations for commands moved to separate global.d.ts file - utility functions moved after test actions in 'Login actions' test
2021-11-22 16:59:01 +01:00
// Create a card by clicking on the + button
cy.log('**Create a card by clicking on the + button**')
cy.get('.KanbanColumnHeader .Button .AddIcon').click()
cy.get('.CardDetail').should('exist')
cy.get('.Dialog.dialog-back .wrapper').click({force: true})
// Create table view
cy.log('**Create table view**')
cy.get('.ViewHeader').get('.DropdownIcon').first().parent().click()
cy.get('.ViewHeader').contains('Add view').click()
cy.get('.ViewHeader').contains('Add view').click()
cy.get('.ViewHeader').
contains('Add view').
parent().
contains('Table').
click()
cy.get(".ViewHeader .Editable[title='Table view']").should('exist')
cy.get(`.TableRow [value='${cardTitle}']`).should('exist')
// Rename table view
cy.log('**Rename table view**')
const tableViewTitle = `Test table (${timestamp})`
cy.get(".ViewHeader .Editable[title='Table view']").
clear().
type(tableViewTitle).
type('{esc}')
cy.get(`.ViewHeader .Editable[title='${tableViewTitle}']`).should('exist')
// Sort the table
cy.log('**Sort the table**')
cy.get('.ViewHeader').contains('Sort').click()
cy.get('.ViewHeader').
contains('Sort').
parent().
contains('Name').
click()
// Delete board
cy.log('**Delete board**')
cy.get('.Sidebar .octo-sidebar-list').
contains(boardTitle).
parent().
parent().
find('.MenuWrapper').
[GH-42] Cypress tests for login actions (#1679) * Testing API added to server: - registered only if `enableTestingAPI` is set to `true` in the config file - has only one route `test/reset` - reset clears the tables in db for blocks, users, sessions - functions `DeleteAllBlocks` and `DeleteAllUsers` added to `Store` interface - new functions implemented for `SQLStore` * Cypress tests (initial version) for login actions added: - redirect to login page, - register user, - test for loading home page deleted, - allow js in `tsconfig.json` for cypress tests. * Cypress tests for login actions: - check that main page with workspace is visible after registration, - initial version of test for login of register user. * Cypress tests for login actions: - function for checking that workspace is available added, - functions for login and logout added, - test for password change added, - session parameters added to server config for cypress testing. * Switch Cypress tests to typescript. * Use ids for inputs instead of placeholder text. * Use cypress request for login without loading login page. * Cypress custom command for login added. * Cypress tests fixed: - new cypress commands for server reset, register/login user - single test for "create and delete board/card" - fixes for `BoardPage` component useEffect callbacks - npm script `runserver-test` doesn't use single user mode * Deletion of all blocks changed: - also deletes blocks from history - public function renamed to DeleteAllBlocksPermanently - code for mocks and public methods generated * Server tests for files fixed on windows. * Cypress tests for the registration of second user via invite link added. * Added `baseUrl` in main `tsconfig.json` (required by cypress configuration). * Cypress test fixed. Comments as well as log messages added. * Log a message if testing API is enabled. * Single cypress test for register/login actions. * Revert changes to server. * More convenient cypress commands: - all API calls made as separate commands - declarations for commands moved to separate global.d.ts file - utility functions moved after test actions in 'Login actions' test
2021-11-22 16:59:01 +01:00
find('.Button.IconButton').
click({force: true})
cy.contains('Delete board').click({force: true})
cy.get('.DeleteBoardDialog button.danger').click({force: true})
cy.contains(boardTitle).should('not.exist')
})
it('MM-T4433 Scrolls the kanban board when dragging card to edge', () => {
// Visit a page and create new empty board
cy.visit('/')
cy.uiCreateBoard('Empty board')
// Create 10 empty groups
cy.log('**Create new empty groups**')
for (let i = 0; i < 10; i++) {
cy.contains('+ Add a group').scrollIntoView().should('be.visible').click()
cy.get('.KanbanColumnHeader .Editable[value=\'New group\']').should('have.length', i + 1)
}
// Create empty card in last group
cy.log('**Create new empty card in first group**')
cy.get('.octo-board-column').last().contains('+ New').scrollIntoView().click()
cy.get('.Dialog').should('exist')
cy.get('.Dialog Button[title=\'Close dialog\']').should('be.visible').click()
cy.get('.KanbanCard').scrollIntoView().should('exist')
// Drag card to right corner and expect scroll to occur
// eslint-disable-next-line cypress/no-unnecessary-waiting
cy.get('.Kanban').invoke('scrollLeft').should('not.equal', 0).wait(1000)
// wait necessary to let state change propagate
// eslint-disable-next-line cypress/no-unnecessary-waiting
cy.get('.KanbanCard').
trigger('dragstart').
wait(500)
// wait necessary to trigger scroll animation for some time
// eslint-disable-next-line cypress/no-unnecessary-waiting
cy.get('.Kanban').
trigger('dragover', {clientX: 400, clientY: Cypress.config().viewportHeight / 2}).
wait(3500).
trigger('dragend')
cy.get('.Kanban').invoke('scrollLeft').should('equal', 0)
})
[GH-42] Cypress tests for login actions (#1679) * Testing API added to server: - registered only if `enableTestingAPI` is set to `true` in the config file - has only one route `test/reset` - reset clears the tables in db for blocks, users, sessions - functions `DeleteAllBlocks` and `DeleteAllUsers` added to `Store` interface - new functions implemented for `SQLStore` * Cypress tests (initial version) for login actions added: - redirect to login page, - register user, - test for loading home page deleted, - allow js in `tsconfig.json` for cypress tests. * Cypress tests for login actions: - check that main page with workspace is visible after registration, - initial version of test for login of register user. * Cypress tests for login actions: - function for checking that workspace is available added, - functions for login and logout added, - test for password change added, - session parameters added to server config for cypress testing. * Switch Cypress tests to typescript. * Use ids for inputs instead of placeholder text. * Use cypress request for login without loading login page. * Cypress custom command for login added. * Cypress tests fixed: - new cypress commands for server reset, register/login user - single test for "create and delete board/card" - fixes for `BoardPage` component useEffect callbacks - npm script `runserver-test` doesn't use single user mode * Deletion of all blocks changed: - also deletes blocks from history - public function renamed to DeleteAllBlocksPermanently - code for mocks and public methods generated * Server tests for files fixed on windows. * Cypress tests for the registration of second user via invite link added. * Added `baseUrl` in main `tsconfig.json` (required by cypress configuration). * Cypress test fixed. Comments as well as log messages added. * Log a message if testing API is enabled. * Single cypress test for register/login actions. * Revert changes to server. * More convenient cypress commands: - all API calls made as separate commands - declarations for commands moved to separate global.d.ts file - utility functions moved after test actions in 'Login actions' test
2021-11-22 16:59:01 +01:00
})