parent
dc180faf30
commit
13f97c246d
@ -24,14 +24,12 @@ const groups = [
|
||||
specs: [
|
||||
'cypress/integration/project/grid/column/edit-column/**/*.spec.js',
|
||||
'cypress/integration/project/grid/column/facet/**/*.spec.js',
|
||||
'cypress/integration/project/grid/column/facet/reconcile/**/*.spec.js',
|
||||
],
|
||||
},
|
||||
{
|
||||
specs: [
|
||||
'cypress/integration/project/grid/column/transpose/**/*.spec.js',
|
||||
'cypress/integration/project/grid/column/view/**/*.spec.js',
|
||||
'cypress/integration/project/grid/column/reconcile/**/*.spec.js',
|
||||
],
|
||||
},
|
||||
{
|
||||
|
@ -1,29 +0,0 @@
|
||||
describe('Clear reconciliation data', () => {
|
||||
it('Test clearing reconciliation for a reconciled dataset', () => {
|
||||
const fixture = [
|
||||
['record_id', 'date', 'location', 'species'],
|
||||
['1', '2017-06-23', 'Maryland', 'Hypsibius dujardini'],
|
||||
['2', '2018-06-09', 'South Carolina', 'Protula bispiralis'],
|
||||
['3', '2018-06-09', 'West Virginia', 'Monstera deliciosa'],
|
||||
['15', '2018-09-06', 'West Virginia', 'Bos taurus'],
|
||||
['16', '2017-10-05', 'Maryland', 'Amandinea devilliersiana'],
|
||||
['24', '2015-05-01', 'West Virginia', 'Faciolela oxyrynca'],
|
||||
];
|
||||
|
||||
cy.loadAndVisitProject(fixture);
|
||||
cy.reconcileColumn('species');
|
||||
cy.assertColumnIsReconciled('species');
|
||||
|
||||
cy.columnActionClick('species', [
|
||||
'Reconcile',
|
||||
'Actions',
|
||||
'Clear reconciliation data',
|
||||
]);
|
||||
|
||||
cy.get('table.data-table').should('not.to.contain', 'Choose new match');
|
||||
// the green bar for matched item should be invisible
|
||||
cy.get(
|
||||
'table.data-table thead div.column-header-recon-stats-matched'
|
||||
).should('not.be.visible');
|
||||
});
|
||||
});
|
@ -1,40 +0,0 @@
|
||||
describe('Discard reconciliation judgments', () => {
|
||||
it('Test discard existing reconciliation judgments', () => {
|
||||
const fixture = [
|
||||
['record_id', 'date', 'location', 'species'],
|
||||
['1', '2017-06-23', 'Maryland', 'Hypsibius dujardini'],
|
||||
['2', '2018-06-09', 'South Carolina', 'Protula bispiralis'],
|
||||
['3', '2018-06-09', 'West Virginia', 'Monstera deliciosa'],
|
||||
['15', '2018-09-06', 'West Virginia', 'Bos taurus'],
|
||||
['16', '2017-10-05', 'Maryland', 'Amandinea devilliersiana'],
|
||||
['24', '2015-05-01', 'West Virginia', 'Faciolela oxyrynca'],
|
||||
];
|
||||
|
||||
cy.loadAndVisitProject(fixture);
|
||||
cy.reconcileColumn('species');
|
||||
cy.assertColumnIsReconciled('species');
|
||||
|
||||
cy.columnActionClick('species', [
|
||||
'Reconcile',
|
||||
'Actions',
|
||||
'Discard reconciliation judgments',
|
||||
]);
|
||||
|
||||
cy.assertNotificationContainingText('Discard recon judgments for 6 cells');
|
||||
|
||||
// Check that all matches are gone (they contains Choose new match )
|
||||
cy.get('table.data-table td .data-table-cell-content').should(
|
||||
'not.to.contain',
|
||||
'Choose new match'
|
||||
);
|
||||
|
||||
// ensure none of the cells contains 'Search for match'
|
||||
// which means they are not matched and reconciliation judgments are gone
|
||||
cy.getCell(0, 'species').should('to.contain', 'Search for match');
|
||||
cy.getCell(1, 'species').should('to.contain', 'Search for match');
|
||||
cy.getCell(2, 'species').should('to.contain', 'Search for match');
|
||||
cy.getCell(3, 'species').should('to.contain', 'Search for match');
|
||||
cy.getCell(4, 'species').should('to.contain', 'Search for match');
|
||||
cy.getCell(5, 'species').should('to.contain', 'Search for match');
|
||||
});
|
||||
});
|
@ -1,45 +0,0 @@
|
||||
describe('Match each cell to its best candidate', () => {
|
||||
it('Match each cell to its best candidate', () => {
|
||||
const fixture = [
|
||||
['record_id', 'date', 'location', 'species'],
|
||||
['1', '2017-06-23', 'Maryland', 'Hypsibius dujardini'],
|
||||
['2', '2018-06-09', 'South Carolina', 'Protula bispiralis'],
|
||||
['3', '2018-06-09', 'West Virginia', 'Monstera deliciosa'],
|
||||
['15', '2018-09-06', 'West Virginia', 'Bos taurus'],
|
||||
['16', '2017-10-05', 'Maryland', 'Amandinea devilliersiana'],
|
||||
['24', '2015-05-01', 'West Virginia', 'Faciolela oxyrynca'],
|
||||
];
|
||||
|
||||
cy.loadAndVisitProject(fixture);
|
||||
// here reconcileColumn is called with automatch = false
|
||||
cy.reconcileColumn('species', false);
|
||||
cy.assertColumnIsReconciled('species');
|
||||
|
||||
// before matching, ensure we have no matches
|
||||
cy.getCell(0, 'species').should('to.contain', 'Search for match');
|
||||
cy.getCell(1, 'species').should('to.contain', 'Search for match');
|
||||
cy.getCell(2, 'species').should('to.contain', 'Search for match');
|
||||
cy.getCell(3, 'species').should('to.contain', 'Search for match');
|
||||
cy.getCell(4, 'species').should('to.contain', 'Search for match');
|
||||
cy.getCell(5, 'species').should('to.contain', 'Search for match');
|
||||
|
||||
cy.columnActionClick('species', [
|
||||
'Reconcile',
|
||||
'Actions',
|
||||
'Match each cell to its best candidate',
|
||||
]);
|
||||
|
||||
cy.assertNotificationContainingText(
|
||||
'Match each of 6 cells to its best candidate'
|
||||
);
|
||||
|
||||
// ensure all cells contains 'Choose new match'
|
||||
// which means they are matched
|
||||
cy.getCell(0, 'species').should('to.contain', 'Choose new match');
|
||||
cy.getCell(1, 'species').should('to.contain', 'Choose new match');
|
||||
cy.getCell(2, 'species').should('to.contain', 'Choose new match');
|
||||
cy.getCell(3, 'species').should('to.contain', 'Choose new match');
|
||||
cy.getCell(4, 'species').should('to.contain', 'Choose new match');
|
||||
cy.getCell(5, 'species').should('to.contain', 'Choose new match');
|
||||
});
|
||||
});
|
@ -1,38 +0,0 @@
|
||||
describe('Add entity identifiers', () => {
|
||||
it('Add a new column that contains the reconciliation id', () => {
|
||||
const fixture = [
|
||||
['record_id', 'date', 'location', 'species'],
|
||||
['1', '2017-06-23', 'Maryland', 'Hypsibius dujardini'],
|
||||
['2', '2018-06-09', 'South Carolina', 'Protula bispiralis'],
|
||||
['3', '2018-06-09', 'West Virginia', 'Monstera deliciosa'],
|
||||
['15', '2018-09-06', 'West Virginia', 'Bos taurus'],
|
||||
['16', '2017-10-05', 'Maryland', 'Amandinea devilliersiana'],
|
||||
['24', '2015-05-01', 'West Virginia', 'Faciolela oxyrynca'],
|
||||
];
|
||||
|
||||
cy.loadAndVisitProject(fixture);
|
||||
cy.reconcileColumn('species');
|
||||
cy.assertColumnIsReconciled('species');
|
||||
|
||||
cy.columnActionClick('species', [
|
||||
'Reconcile',
|
||||
'Add entity identifiers column',
|
||||
]);
|
||||
|
||||
// check the dialog, enter a new column name "id_column"
|
||||
cy.get('.dialog-container .dialog-header').should(
|
||||
'to.contain',
|
||||
'Add column containing entity identifiers on species'
|
||||
);
|
||||
cy.get('.dialog-container .dialog-body input').type('id_column');
|
||||
cy.get('.dialog-container .dialog-footer input').contains('OK').click();
|
||||
|
||||
// Check the cells content for the new column
|
||||
cy.assertCellEquals(0, 'id_column', '2253634'); // untouched
|
||||
cy.assertCellEquals(1, 'id_column', '2328088'); // blanked
|
||||
cy.assertCellEquals(2, 'id_column', '2868241'); // untouched
|
||||
cy.assertCellEquals(3, 'id_column', null); // untouched
|
||||
cy.assertCellEquals(4, 'id_column', '8211794'); // blanked
|
||||
cy.assertCellEquals(5, 'id_column', null); // blanked
|
||||
});
|
||||
});
|
@ -1,43 +0,0 @@
|
||||
describe('Copy reconciliation data', () => {
|
||||
it('Copy reconciliation data from species to species_copy', () => {
|
||||
const fixture = [
|
||||
['species_original', 'species_copy'],
|
||||
['Hypsibius dujardini', 'Hypsibius dujardini'],
|
||||
['Protula bispiralis', 'Protula bispiralis'],
|
||||
[null, 'Hypsibius dujardini'], // new line to ensure copy is done one multiple rows
|
||||
];
|
||||
|
||||
cy.loadAndVisitProject(fixture);
|
||||
cy.reconcileColumn('species_original');
|
||||
cy.assertColumnIsReconciled('species_original');
|
||||
|
||||
cy.columnActionClick('species_original', [
|
||||
'Reconcile',
|
||||
'Copy reconciliation data',
|
||||
]);
|
||||
|
||||
// check the dialog, enter a new column name "id_column"
|
||||
cy.get('.dialog-container .dialog-header').should(
|
||||
'to.contain',
|
||||
'Copy recon judgments from column species_original'
|
||||
);
|
||||
cy.get('.dialog-container select[bind="toColumnSelect"]').select(
|
||||
'species_copy'
|
||||
);
|
||||
|
||||
//
|
||||
// cy.assertColumnIsReconciled('species_copy');
|
||||
|
||||
cy.get('.dialog-container .dialog-footer button').contains('Copy').click();
|
||||
|
||||
cy.assertNotificationContainingText(
|
||||
'Copy 3 recon judgments from column species_original to species_copy'
|
||||
);
|
||||
|
||||
// ensure 5 rows are matched based on the identifier
|
||||
// 2 on the original column, 3 on the copy
|
||||
cy.get(
|
||||
'table.data-table td .data-table-cell-content:contains("Choose new match")'
|
||||
).should('have.length', 5);
|
||||
});
|
||||
});
|
@ -1,30 +0,0 @@
|
||||
describe('Facet by judgment', () => {
|
||||
it('Test clearing reconciliation for a reconciled dataset', () => {
|
||||
const fixture = [
|
||||
['record_id', 'date', 'location', 'species'],
|
||||
['1', '2017-06-23', 'Maryland', 'Hypsibius dujardini'],
|
||||
['2', '2018-06-09', 'South Carolina', 'Protula bispiralis'],
|
||||
['3', '2018-06-09', 'West Virginia', 'Monstera deliciosa'],
|
||||
['15', '2018-09-06', 'West Virginia', 'Bos taurus'],
|
||||
['16', '2017-10-05', 'Maryland', 'Amandinea devilliersiana'],
|
||||
['24', '2015-05-01', 'West Virginia', 'Faciolela oxyrynca'],
|
||||
];
|
||||
|
||||
cy.loadAndVisitProject(fixture);
|
||||
cy.reconcileColumn('species');
|
||||
cy.assertColumnIsReconciled('species');
|
||||
|
||||
// cleanup automatic facets before doing any testing
|
||||
cy.get('#or-proj-facFil').click();
|
||||
cy.get('div.browsing-panel-controls').should('be.visible');
|
||||
cy.get('#refine-tabs-facets a')
|
||||
.contains('Remove All')
|
||||
.should('be.visible')
|
||||
.click();
|
||||
|
||||
cy.columnActionClick('species', ['Reconcile', 'Facets', 'By judgment']);
|
||||
|
||||
// ensure a new facet has been added
|
||||
cy.getFacetContainer('species: judgment').should('exist');
|
||||
});
|
||||
});
|
@ -1,260 +0,0 @@
|
||||
// import 'fixture-species';
|
||||
|
||||
const fixture = [
|
||||
['record_id', 'date', 'location', 'species'],
|
||||
['1', '2017-06-23', 'Maryland', 'Hypsibius dujardini'],
|
||||
['2', '2018-06-09', 'South Carolina', 'Protula bispiralis'],
|
||||
['3', '2018-06-09', 'West Virginia', 'Monstera deliciosa'],
|
||||
['15', '2018-09-06', 'West Virginia', 'Bos taurus'],
|
||||
['16', '2017-10-05', 'Maryland', 'Amandinea devilliersiana'],
|
||||
['24', '2015-05-01', 'West Virginia', 'Faciolela oxyrynca'],
|
||||
];
|
||||
|
||||
/**
|
||||
* Utility method used by several tests of this scenario
|
||||
* It adds the CSV reconciliation service in the interface
|
||||
*/
|
||||
const addReconciliationService = () => {
|
||||
cy.get('.recon-dialog-service-list', { log: false }).then(($list) => {
|
||||
if ($list.find('.recon-dialog-service-selector').length > 0) {
|
||||
// cy.get('.recon-dialog-service-selector-remove').click({ multiple: true });
|
||||
|
||||
cy.get('.recon-dialog-service-selector', { log: false }).each(($btn) => {
|
||||
cy.get(
|
||||
'.recon-dialog-service-selector:first-child .recon-dialog-service-selector-remove',
|
||||
{ log: false }
|
||||
).click({ log: false });
|
||||
});
|
||||
}
|
||||
});
|
||||
// Checking that the list is empty ensure the deletion of all previous services is completed
|
||||
cy.get('.recon-dialog-service-list', { log: false }).should('be.empty');
|
||||
|
||||
cy.get('.dialog-container button', { log: false })
|
||||
.contains('Add Standard Service...', { log: false })
|
||||
.click({ log: false });
|
||||
cy.get('.dialog-container:last-child input', {
|
||||
log: false,
|
||||
}).type('http://localhost:8000/reconcile', { log: false });
|
||||
|
||||
cy.get('.dialog-container:last-child button', { log: false })
|
||||
.contains('Add Service', { log: false })
|
||||
.click({ log: false });
|
||||
|
||||
// Checking that the list have only one service ensures that the services has been added
|
||||
cy.get('.recon-dialog-service-selector', { log: false }).should('have.length', 1);
|
||||
|
||||
cy.get('.recon-dialog-service-selector:last-child').should(
|
||||
'to.contain',
|
||||
'CSV Reconciliation service'
|
||||
);
|
||||
|
||||
cy.get('.recon-dialog-service-selector:last-child', { log: false }).click({
|
||||
log: false,
|
||||
});
|
||||
|
||||
cy.get('.recon-dialog-service-list').should('to.have.css', 'display', 'none');
|
||||
};
|
||||
|
||||
describe('Base reconciliation tests', () => {
|
||||
it('Load the reconciliation panel, test the layout', () => {
|
||||
cy.loadAndVisitProject(fixture);
|
||||
cy.columnActionClick('species', ['Reconcile', 'Start reconciling']);
|
||||
addReconciliationService();
|
||||
cy.get('.recon-dialog-service-panel.recon-dialog-standard-service-panel').should('be.visible');
|
||||
cy.get('.dialog-header').should('to.contain', 'Reconcile column "species"');
|
||||
cy.get('.dialog-body').should(
|
||||
'to.contain',
|
||||
'Reconcile each cell to an entity of one of these types'
|
||||
);
|
||||
cy.get('.dialog-body').should(
|
||||
'to.contain',
|
||||
'Reconcile each cell to an entity of one of these types'
|
||||
);
|
||||
cy.get('.dialog-body .recon-dialog-service-panel').should(
|
||||
'to.contain',
|
||||
'CSV-recon'
|
||||
);
|
||||
});
|
||||
|
||||
it('Reconcile with automatch disabled', () => {
|
||||
cy.loadAndVisitProject(fixture);
|
||||
cy.columnActionClick('species', ['Reconcile', 'Start reconciling']);
|
||||
addReconciliationService();
|
||||
|
||||
cy.get('.recon-dialog-service-panel.recon-dialog-standard-service-panel').should('be.visible');
|
||||
|
||||
cy.get('.dialog-container span')
|
||||
.contains('Auto-match')
|
||||
.siblings('input')
|
||||
.uncheck();
|
||||
cy.get('.dialog-container button').contains('Start Reconciling...').click();
|
||||
cy.wait(10000); // eslint-disable-line
|
||||
cy.assertColumnIsReconciled('species');
|
||||
|
||||
// "Choose new match" appear when there is a match, if it's not there it means nothing is matched
|
||||
cy.get('table.data-table td .data-table-cell-content').should(
|
||||
'not.to.contain',
|
||||
'Choose new match'
|
||||
);
|
||||
});
|
||||
|
||||
it('Reconcile with automatch enabled', () => {
|
||||
cy.loadAndVisitProject(fixture);
|
||||
cy.columnActionClick('species', ['Reconcile', 'Start reconciling']);
|
||||
addReconciliationService();
|
||||
cy.get('.recon-dialog-service-panel.recon-dialog-standard-service-panel').should('be.visible');
|
||||
|
||||
cy.get('.dialog-container span')
|
||||
.contains('Auto-match')
|
||||
.siblings('input')
|
||||
.check();
|
||||
cy.get('.dialog-container button').contains('Start Reconciling...').click();
|
||||
cy.wait(10000); // eslint-disable-line
|
||||
cy.assertColumnIsReconciled('species');
|
||||
|
||||
// 4 rows should have been automatched
|
||||
cy.get(
|
||||
'table.data-table td .data-table-cell-content:contains("Choose new match")'
|
||||
).should('have.length', 4);
|
||||
});
|
||||
|
||||
it('Max number of candidates', () => {
|
||||
const fixture = [
|
||||
['record_id', 'date', 'location', 'species'],
|
||||
['15', '2018-09-06', 'West Virginia', 'Bos taurus'],
|
||||
];
|
||||
cy.loadAndVisitProject(fixture);
|
||||
cy.columnActionClick('species', ['Reconcile', 'Start reconciling']);
|
||||
addReconciliationService();
|
||||
cy.get('.recon-dialog-service-panel.recon-dialog-standard-service-panel').should('be.visible');
|
||||
cy.get('.dialog-container input[bind="maxCandidates"]').type(2);
|
||||
cy.get('.dialog-container button').contains('Start Reconciling...').click();
|
||||
cy.wait(10000); // eslint-disable-line
|
||||
cy.assertColumnIsReconciled('species');
|
||||
cy.get('.data-table-cell-content .data-table-recon-topic').should(
|
||||
'have.length',
|
||||
2
|
||||
);
|
||||
});
|
||||
|
||||
it('Test reconciliation, in the grid', () => {
|
||||
cy.loadAndVisitProject(fixture);
|
||||
cy.reconcileColumn('species');
|
||||
cy.assertColumnIsReconciled('species');
|
||||
// Test 1, when there is a match
|
||||
// simple assertion to ensure the content of the iframe is loaded for row 0 / species
|
||||
// (recon loads match details from the recon endpoint in an iframe)
|
||||
cy.getCell(0, 'species').within(() => {
|
||||
cy.get('a[href^="http://localhost:8000/"]').trigger('mouseover');
|
||||
cy.get(
|
||||
'a[href^="http://localhost:8000/"] .data-table-topic-popup'
|
||||
).should('to.exist');
|
||||
|
||||
cy.get('iframe').its('0.contentDocument').should('exist');
|
||||
});
|
||||
|
||||
// Test 2, when there are candidates
|
||||
// ensure the first one loads an iframe on hover
|
||||
cy.getCell(3, 'species').within(() => {
|
||||
cy.get(
|
||||
'.data-table-recon-candidate:first-child .data-table-recon-topic'
|
||||
).trigger('mouseover');
|
||||
cy.get(
|
||||
'.data-table-recon-candidate:first-child .data-table-topic-popup'
|
||||
).should('to.exist');
|
||||
|
||||
cy.get(
|
||||
'.data-table-recon-candidate:first-child .data-table-topic-popup iframe'
|
||||
)
|
||||
.its('0.contentDocument')
|
||||
.should('exist');
|
||||
|
||||
// verify the three buttons inside the popup
|
||||
cy.get(
|
||||
'.data-table-recon-candidate:first-child .data-table-topic-popup'
|
||||
).within(() => {
|
||||
cy.get('button').contains('Match this Cell').should('to.exist');
|
||||
cy.get('button')
|
||||
.contains('Match All Identical Cells')
|
||||
.should('to.exist');
|
||||
cy.get('button').contains('Cancel').should('to.exist');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
it('Match this cell', () => {
|
||||
const fixture = [
|
||||
['record_id', 'date', 'location', 'species'],
|
||||
['15', '2018-09-06', 'West Virginia', 'Bos taurus'],
|
||||
['3', '2018-06-09', 'West Virginia', 'Monstera deliciosa'],
|
||||
];
|
||||
|
||||
cy.loadAndVisitProject(fixture);
|
||||
cy.reconcileColumn('species');
|
||||
cy.assertColumnIsReconciled('species');
|
||||
|
||||
// over on a candidate (Lineus longissimus)
|
||||
cy.getCell(0, 'species')
|
||||
.find('a')
|
||||
.contains('Lineus longissimus')
|
||||
.trigger('mouseover');
|
||||
|
||||
// click on match
|
||||
cy.getCell(0, 'species').find('button').contains('Match this Cell').click();
|
||||
|
||||
// check notification
|
||||
cy.assertNotificationContainingText('Match Lineus longissimus');
|
||||
|
||||
// check that candidates have disappeared, means matched
|
||||
cy.getCell(0, 'species')
|
||||
.find('.data-table-recon-candidates')
|
||||
.should('not.to.exist');
|
||||
});
|
||||
|
||||
it('Match All identical cell', () => {
|
||||
const fixture = [
|
||||
['record_id', 'date', 'location', 'species'],
|
||||
['15', '2018-09-06', 'West Virginia', 'Bos taurus'],
|
||||
['16', '2018-09-06', 'West Virginia', 'Bos taurus'],
|
||||
];
|
||||
cy.loadAndVisitProject(fixture);
|
||||
cy.reconcileColumn('species');
|
||||
cy.assertColumnIsReconciled('species');
|
||||
|
||||
// ensure both rows have candidates
|
||||
cy.getCell(0, 'species')
|
||||
.find('.data-table-recon-candidate')
|
||||
.should('have.length', 6);
|
||||
|
||||
cy.getCell(1, 'species')
|
||||
.find('.data-table-recon-candidate')
|
||||
.should('have.length', 6);
|
||||
|
||||
// over on a candidate (Lineus longissimus)
|
||||
cy.getCell(0, 'species')
|
||||
.find('a')
|
||||
.contains('Lineus longissimus')
|
||||
.trigger('mouseover');
|
||||
|
||||
// click on match all
|
||||
cy.getCell(0, 'species')
|
||||
.find('button')
|
||||
.contains('Match All Identical Cells')
|
||||
.click();
|
||||
|
||||
// check notification
|
||||
cy.assertNotificationContainingText(
|
||||
'Match item Lineus longissimus (2508430) for 2 cells'
|
||||
);
|
||||
|
||||
// check that candidates have disappeared on both rows, means matched all
|
||||
cy.getCell(0, 'species')
|
||||
.find('.data-table-recon-candidates')
|
||||
.should('not.to.exist');
|
||||
|
||||
cy.getCell(1, 'species')
|
||||
.find('.data-table-recon-candidates')
|
||||
.should('not.to.exist');
|
||||
});
|
||||
});
|
@ -1,30 +0,0 @@
|
||||
describe('Use values as identifiers', () => {
|
||||
it('Test clearing reconciliation for a reconciled dataset', () => {
|
||||
const fixture = [
|
||||
['identifier'],
|
||||
['2253634'],
|
||||
['2328088'],
|
||||
['2868241'],
|
||||
[null],
|
||||
['8211794'],
|
||||
[null],
|
||||
];
|
||||
|
||||
cy.loadAndVisitProject(fixture);
|
||||
|
||||
cy.columnActionClick('identifier', [
|
||||
'Reconcile',
|
||||
'Use values as identifiers',
|
||||
]);
|
||||
|
||||
cy.get('.dialog-container .dialog-footer button').contains('OK').click();
|
||||
|
||||
// ensure column is reconciled
|
||||
cy.assertColumnIsReconciled('identifier');
|
||||
|
||||
// ensure 4 rows are matched based on the identifier
|
||||
cy.get(
|
||||
'table.data-table td .data-table-cell-content:contains("Choose new match")'
|
||||
).should('have.length', 4);
|
||||
});
|
||||
});
|
Loading…
Reference in New Issue
Block a user