feat: add tests for create project (#3603)
* feat: add tests for create project Signed-off-by: kushthedude <kushthedude@gmail.com> * add test for URL and increase timeout Signed-off-by: kushthedude <kushthedude@gmail.com> * restore timeout Signed-off-by: kushthedude <kushthedude@gmail.com> * restore timeout Signed-off-by: kushthedude <kushthedude@gmail.com> * fix Signed-off-by: kushthedude <kushthedude@gmail.com> * amend urls Signed-off-by: kushthedude <kushthedude@gmail.com> Co-authored-by: Tom Morris <tfmorris@gmail.com>
This commit is contained in:
parent
763ef2fd09
commit
3db9453661
6
main/tests/cypress/cypress/fixtures/shop.mini.tsv
Normal file
6
main/tests/cypress/cypress/fixtures/shop.mini.tsv
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
storm instant amount choice pool married
|
||||||
|
keep fifty memory behavior courage troops
|
||||||
|
hello mass industry cannot complete practical
|
||||||
|
add shop surrounded time highway myself
|
||||||
|
first task fine steep should great
|
||||||
|
has shot bet became damage share
|
|
@ -1,5 +1,6 @@
|
|||||||
describe(__filename, function () {
|
describe(__filename, function () {
|
||||||
it('Test the create project page', function () {
|
it('Test the create project from this computer based on CSV', function () {
|
||||||
|
// navigate to the create page
|
||||||
cy.visitOpenRefine();
|
cy.visitOpenRefine();
|
||||||
cy.navigateTo('Create Project');
|
cy.navigateTo('Create Project');
|
||||||
cy.get('#create-project-ui-source-selection-tabs > div')
|
cy.get('#create-project-ui-source-selection-tabs > div')
|
||||||
@ -8,8 +9,7 @@ describe(__filename, function () {
|
|||||||
cy.get('.create-project-ui-source-selection-tab-body.selected').contains(
|
cy.get('.create-project-ui-source-selection-tab-body.selected').contains(
|
||||||
'Locate one or more files on your computer to upload'
|
'Locate one or more files on your computer to upload'
|
||||||
);
|
);
|
||||||
|
// add file
|
||||||
// load a file
|
|
||||||
const csvFile = {
|
const csvFile = {
|
||||||
filePath: 'food.mini.csv',
|
filePath: 'food.mini.csv',
|
||||||
mimeType: 'application/csv',
|
mimeType: 'application/csv',
|
||||||
@ -26,89 +26,168 @@ describe(__filename, function () {
|
|||||||
|
|
||||||
// then ensure we are on the preview page
|
// then ensure we are on the preview page
|
||||||
cy.get('.create-project-ui-panel').contains('Configure Parsing Options');
|
cy.get('.create-project-ui-panel').contains('Configure Parsing Options');
|
||||||
});
|
|
||||||
|
|
||||||
it('Test project naming', function () {
|
// preview and click next
|
||||||
cy.visitOpenRefine();
|
|
||||||
cy.createProjectThroughUserInterface('food.mini.csv');
|
|
||||||
cy.get('.create-project-ui-panel').contains('Configure Parsing Options');
|
|
||||||
cy.get(
|
|
||||||
'.default-importing-wizard-header input[bind="projectNameInput"]'
|
|
||||||
).type('this is a test');
|
|
||||||
cy.doCreateProjectThroughUserInterface();
|
cy.doCreateProjectThroughUserInterface();
|
||||||
|
|
||||||
cy.get('#project-name-button').contains('this is a test');
|
|
||||||
});
|
});
|
||||||
|
it('Test the create project from this computer based on TSV', function () {
|
||||||
it('Test project tagging', function () {
|
|
||||||
cy.visitOpenRefine();
|
|
||||||
cy.createProjectThroughUserInterface('food.mini.csv');
|
|
||||||
cy.get('.create-project-ui-panel').contains('Configure Parsing Options');
|
|
||||||
const uniqueProjectName = Date.now();
|
|
||||||
const uniqueTagName1 = 'tag1_' + Date.now();
|
|
||||||
const uniqueTagName2 = 'tag2_' + Date.now();
|
|
||||||
|
|
||||||
cy.get(
|
|
||||||
'.default-importing-wizard-header input[bind="projectNameInput"]'
|
|
||||||
).type(uniqueProjectName);
|
|
||||||
// triger the select input
|
|
||||||
cy.get('#project-tags-container').click();
|
|
||||||
// Type and Validate the tag, pressing enter
|
|
||||||
cy.get('#project-tags-container .select2-input').type(uniqueTagName1);
|
|
||||||
cy.get('body').type('{enter}');
|
|
||||||
cy.get('#project-tags-container .select2-input').type(uniqueTagName2);
|
|
||||||
cy.get('body').type('{enter}');
|
|
||||||
cy.get('#or-import-parsopt').click();
|
|
||||||
cy.doCreateProjectThroughUserInterface();
|
|
||||||
|
|
||||||
cy.visitOpenRefine();
|
|
||||||
cy.navigateTo('Open Project');
|
|
||||||
cy.get('#projects-list')
|
|
||||||
.contains(uniqueProjectName)
|
|
||||||
.parent()
|
|
||||||
.parent()
|
|
||||||
.contains(uniqueTagName1);
|
|
||||||
cy.get('#projects-list')
|
|
||||||
.contains(uniqueProjectName)
|
|
||||||
.parent()
|
|
||||||
.parent()
|
|
||||||
.contains(uniqueTagName2);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('E2E, Creates a simple project, based on a CSV', function () {
|
|
||||||
// navigate to the create page
|
// navigate to the create page
|
||||||
cy.visitOpenRefine();
|
cy.visitOpenRefine();
|
||||||
cy.navigateTo('Create Project');
|
cy.navigateTo('Create Project');
|
||||||
|
cy.get('#create-project-ui-source-selection-tabs > div')
|
||||||
|
.contains('This Computer')
|
||||||
|
.click();
|
||||||
|
cy.get('.create-project-ui-source-selection-tab-body.selected').contains(
|
||||||
|
'Locate one or more files on your computer to upload'
|
||||||
|
);
|
||||||
// add file
|
// add file
|
||||||
const csvFile = {
|
const tsvFile = {
|
||||||
filePath: 'food.mini.csv',
|
filePath: 'shop.mini.tsv',
|
||||||
mimeType: 'application/csv',
|
mimeType: 'text/tab-separated-values',
|
||||||
};
|
};
|
||||||
cy.get(
|
cy.get(
|
||||||
'.create-project-ui-source-selection-tab-body.selected input[type="file"]'
|
'.create-project-ui-source-selection-tab-body.selected input[type="file"]'
|
||||||
).attachFile(csvFile);
|
).attachFile(tsvFile);
|
||||||
cy.get(
|
cy.get(
|
||||||
'.create-project-ui-source-selection-tab-body.selected button.button-primary'
|
'.create-project-ui-source-selection-tab-body.selected button.button-primary'
|
||||||
).click();
|
).click();
|
||||||
|
cy.get(
|
||||||
|
'.default-importing-wizard-header input[bind="projectNameInput"]'
|
||||||
|
).should('have.value', 'shop mini tsv');
|
||||||
|
|
||||||
|
// then ensure we are on the preview page
|
||||||
|
cy.get('.create-project-ui-panel').contains('Configure Parsing Options');
|
||||||
|
|
||||||
// preview and click next
|
// preview and click next
|
||||||
|
cy.doCreateProjectThroughUserInterface();
|
||||||
|
});
|
||||||
|
it('Test the create project from clipboard based on CSV', function () {
|
||||||
|
// navigate to the create page
|
||||||
|
cy.visitOpenRefine();
|
||||||
|
cy.navigateTo('Create Project');
|
||||||
|
cy.get('#create-project-ui-source-selection-tabs > div')
|
||||||
|
.contains('Clipboard')
|
||||||
|
.click();
|
||||||
|
cy.get('#or-import-clipboard').should(
|
||||||
|
'to.contain',
|
||||||
|
'Paste data from clipboard here:'
|
||||||
|
);
|
||||||
|
// add file
|
||||||
|
const csvFile = `Username; Identifier;First name;Last name
|
||||||
|
booker12;9012;Rachel;Booker
|
||||||
|
grey07;2070;Laura;Grey
|
||||||
|
johnson81;4081;Craig;Johnson
|
||||||
|
jenkins46;9346;Mary;Jenkins
|
||||||
|
smith79;5079;Jamie;Smith`;
|
||||||
|
cy.get('textarea').invoke('val', csvFile);
|
||||||
cy.get(
|
cy.get(
|
||||||
'.default-importing-wizard-header button[bind="nextButton"]'
|
'.create-project-ui-source-selection-tab-body.selected button.button-primary'
|
||||||
).click();
|
)
|
||||||
cy.get('#create-project-progress-message').contains('Done.');
|
.contains('Next »')
|
||||||
|
.click();
|
||||||
|
cy.get(
|
||||||
|
'.default-importing-wizard-header input[bind="projectNameInput"]'
|
||||||
|
).should('have.value', 'Clipboard');
|
||||||
|
|
||||||
// workaround to ensure project is loaded
|
// then ensure we are on the preview page
|
||||||
// cypress does not support window.location = ...
|
cy.get('.create-project-ui-panel').contains('Configure Parsing Options');
|
||||||
cy.get('h2').contains('HTTP ERROR 404');
|
|
||||||
cy.location().should((location) => {
|
|
||||||
expect(location.href).contains(
|
|
||||||
Cypress.env('OPENREFINE_URL') + '/__/project?'
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
cy.location().then((location) => {
|
// preview and click next
|
||||||
const projectId = location.href.split('=').slice(-1)[0];
|
cy.doCreateProjectThroughUserInterface();
|
||||||
cy.visitProject(projectId);
|
});
|
||||||
});
|
it('Test the create project from clipboard based on TSV', function () {
|
||||||
|
// navigate to the create page
|
||||||
|
cy.visitOpenRefine();
|
||||||
|
cy.navigateTo('Create Project');
|
||||||
|
cy.get('#create-project-ui-source-selection-tabs > div')
|
||||||
|
.contains('Clipboard')
|
||||||
|
.click();
|
||||||
|
cy.get('#or-import-clipboard').should(
|
||||||
|
'to.contain',
|
||||||
|
'Paste data from clipboard here:'
|
||||||
|
);
|
||||||
|
// add file
|
||||||
|
const tsvFile = `Some parameter Other parameter Last parameter
|
||||||
|
CONST 123456 12.45`;
|
||||||
|
cy.get('textarea').invoke('val', tsvFile);
|
||||||
|
cy.get(
|
||||||
|
'.create-project-ui-source-selection-tab-body.selected button.button-primary'
|
||||||
|
)
|
||||||
|
.contains('Next »')
|
||||||
|
.click();
|
||||||
|
cy.get(
|
||||||
|
'.default-importing-wizard-header input[bind="projectNameInput"]'
|
||||||
|
).should('have.value', 'Clipboard');
|
||||||
|
|
||||||
|
// then ensure we are on the preview page
|
||||||
|
cy.get('.create-project-ui-panel').contains('Configure Parsing Options');
|
||||||
|
|
||||||
|
// preview and click next
|
||||||
|
cy.doCreateProjectThroughUserInterface();
|
||||||
|
});
|
||||||
|
it('Test the create project from Web URL based on CSV', function () {
|
||||||
|
// navigate to the create page
|
||||||
|
cy.visitOpenRefine();
|
||||||
|
cy.navigateTo('Create Project');
|
||||||
|
cy.get('#create-project-ui-source-selection-tabs > div')
|
||||||
|
.contains('Web Addresses (URLs)')
|
||||||
|
.click();
|
||||||
|
cy.get('#or-import-enterurl').should(
|
||||||
|
'to.contain',
|
||||||
|
'Enter one or more web addresses (URLs) pointing to data to download:'
|
||||||
|
);
|
||||||
|
// add file
|
||||||
|
const csvURL =
|
||||||
|
'https://raw.githubusercontent.com/OpenRefine/OpenRefine/master/main/tests/cypress/cypress/fixtures/food.mini.csv';
|
||||||
|
cy.get('input[bind="urlInput"]').filter(':visible').type(csvURL);
|
||||||
|
cy.get(
|
||||||
|
'.create-project-ui-source-selection-tab-body.selected button.button-primary'
|
||||||
|
)
|
||||||
|
.contains('Next »')
|
||||||
|
.click();
|
||||||
|
cy.get(
|
||||||
|
'.default-importing-wizard-header input[bind="projectNameInput"]'
|
||||||
|
).should('have.value', 'food mini csv');
|
||||||
|
|
||||||
|
// then ensure we are on the preview page
|
||||||
|
cy.get('.create-project-ui-panel').contains('Configure Parsing Options');
|
||||||
|
|
||||||
|
// preview and click next
|
||||||
|
cy.doCreateProjectThroughUserInterface();
|
||||||
|
});
|
||||||
|
it('Test the create project from Multiple Web URLs based on CSV', function () {
|
||||||
|
// navigate to the create page
|
||||||
|
cy.visitOpenRefine();
|
||||||
|
cy.navigateTo('Create Project');
|
||||||
|
cy.get('#create-project-ui-source-selection-tabs > div')
|
||||||
|
.contains('Web Addresses (URLs)')
|
||||||
|
.click();
|
||||||
|
cy.get('#or-import-enterurl').should(
|
||||||
|
'to.contain',
|
||||||
|
'Enter one or more web addresses (URLs) pointing to data to download:'
|
||||||
|
);
|
||||||
|
// add file
|
||||||
|
const csvURL =
|
||||||
|
'https://raw.githubusercontent.com/OpenRefine/OpenRefine/master/main/tests/cypress/cypress/fixtures/food.mini.csv';
|
||||||
|
cy.get('input[bind="urlInput"]').filter(':visible').type(csvURL);
|
||||||
|
cy.get('button[bind="addButton"]').contains('Add Another URL').click();
|
||||||
|
|
||||||
|
cy.get(
|
||||||
|
'.create-project-ui-source-selection-tab-body.selected button.button-primary'
|
||||||
|
)
|
||||||
|
.contains('Next »')
|
||||||
|
.click();
|
||||||
|
cy.get('.create-project-ui-panel', { timeout: 7500 })
|
||||||
|
.contains('Configure Parsing Options »')
|
||||||
|
.click();
|
||||||
|
cy.get(
|
||||||
|
'.default-importing-wizard-header input[bind="projectNameInput"]'
|
||||||
|
).should('have.value', 'food mini csv');
|
||||||
|
|
||||||
|
// then ensure we are on the preview page
|
||||||
|
cy.get('.create-project-ui-panel').contains('Configure Parsing Options');
|
||||||
|
|
||||||
|
// preview and click next
|
||||||
|
cy.doCreateProjectThroughUserInterface();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -0,0 +1,48 @@
|
|||||||
|
describe(__filename, function () {
|
||||||
|
it('Test project naming', function () {
|
||||||
|
cy.visitOpenRefine();
|
||||||
|
cy.createProjectThroughUserInterface('food.mini.csv');
|
||||||
|
cy.get('.create-project-ui-panel').contains('Configure Parsing Options');
|
||||||
|
cy.get(
|
||||||
|
'.default-importing-wizard-header input[bind="projectNameInput"]'
|
||||||
|
).type('this is a test');
|
||||||
|
cy.doCreateProjectThroughUserInterface();
|
||||||
|
|
||||||
|
cy.get('#project-name-button').contains('this is a test');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('Test project tagging', function () {
|
||||||
|
cy.visitOpenRefine();
|
||||||
|
cy.createProjectThroughUserInterface('food.mini.csv');
|
||||||
|
cy.get('.create-project-ui-panel').contains('Configure Parsing Options');
|
||||||
|
const uniqueProjectName = Date.now();
|
||||||
|
const uniqueTagName1 = 'tag1_' + Date.now();
|
||||||
|
const uniqueTagName2 = 'tag2_' + Date.now();
|
||||||
|
|
||||||
|
cy.get(
|
||||||
|
'.default-importing-wizard-header input[bind="projectNameInput"]'
|
||||||
|
).type(uniqueProjectName);
|
||||||
|
// triger the select input
|
||||||
|
cy.get('#project-tags-container').click();
|
||||||
|
// Type and Validate the tag, pressing enter
|
||||||
|
cy.get('#project-tags-container .select2-input').type(uniqueTagName1);
|
||||||
|
cy.get('body').type('{enter}');
|
||||||
|
cy.get('#project-tags-container .select2-input').type(uniqueTagName2);
|
||||||
|
cy.get('body').type('{enter}');
|
||||||
|
cy.get('#or-import-parsopt').click();
|
||||||
|
cy.doCreateProjectThroughUserInterface();
|
||||||
|
|
||||||
|
cy.visitOpenRefine();
|
||||||
|
cy.navigateTo('Open Project');
|
||||||
|
cy.get('#projects-list')
|
||||||
|
.contains(uniqueProjectName)
|
||||||
|
.parent()
|
||||||
|
.parent()
|
||||||
|
.contains(uniqueTagName1);
|
||||||
|
cy.get('#projects-list')
|
||||||
|
.contains(uniqueProjectName)
|
||||||
|
.parent()
|
||||||
|
.parent()
|
||||||
|
.contains(uniqueTagName2);
|
||||||
|
});
|
||||||
|
});
|
@ -66,7 +66,9 @@ Cypress.Commands.add('createProjectThroughUserInterface', (fixtureFile) => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
Cypress.Commands.add('doCreateProjectThroughUserInterface', () => {
|
Cypress.Commands.add('doCreateProjectThroughUserInterface', () => {
|
||||||
cy.get('.default-importing-wizard-header button[bind="nextButton"]').click();
|
cy.get('.default-importing-wizard-header button[bind="nextButton"]')
|
||||||
|
.contains('Create Project »')
|
||||||
|
.click();
|
||||||
cy.get('#create-project-progress-message').contains('Done.');
|
cy.get('#create-project-progress-message').contains('Done.');
|
||||||
|
|
||||||
// workaround to ensure project is loaded
|
// workaround to ensure project is loaded
|
||||||
|
Loading…
Reference in New Issue
Block a user