Add todo tag for later fixing
This commit is contained in:
parent
c646236ac2
commit
024dc324f2
|
@ -84,105 +84,117 @@ test.describe( 'Add variations', { tag: '@gutenberg' }, () => {
|
|||
}
|
||||
} );
|
||||
|
||||
test( 'can manually add a variation', async ( { page } ) => {
|
||||
await test.step( `Open "Edit product" page of product id ${ productId_addManually }`, async () => {
|
||||
await page.goto(
|
||||
`/wp-admin/post.php?post=${ productId_addManually }&action=edit`
|
||||
);
|
||||
} );
|
||||
|
||||
// hook up the woocommerce_variations_added jQuery trigger so we can check if it's fired
|
||||
await test.step( 'Hook up the woocommerce_variations_added jQuery trigger', async () => {
|
||||
await page.evaluate( () => {
|
||||
window.woocommerceVariationsAddedFunctionCalls = [];
|
||||
|
||||
window
|
||||
.jQuery( '#variable_product_options' )
|
||||
.on( 'woocommerce_variations_added', ( event, data ) => {
|
||||
window.woocommerceVariationsAddedFunctionCalls.push( [
|
||||
event,
|
||||
data,
|
||||
] );
|
||||
} );
|
||||
test(
|
||||
'can manually add a variation',
|
||||
{ tag: '@todo-fix-in-multisite' },
|
||||
async ( { page } ) => {
|
||||
await test.step( `Open "Edit product" page of product id ${ productId_addManually }`, async () => {
|
||||
await page.goto(
|
||||
`/wp-admin/post.php?post=${ productId_addManually }&action=edit`
|
||||
);
|
||||
} );
|
||||
} );
|
||||
|
||||
await test.step( 'Click on the "Variations" tab.', async () => {
|
||||
await page.locator( '.variations_tab' ).click();
|
||||
} );
|
||||
// hook up the woocommerce_variations_added jQuery trigger so we can check if it's fired
|
||||
await test.step( 'Hook up the woocommerce_variations_added jQuery trigger', async () => {
|
||||
await page.evaluate( () => {
|
||||
window.woocommerceVariationsAddedFunctionCalls = [];
|
||||
|
||||
await test.step( `Manually add ${ variationsToManuallyCreate.length } variations`, async () => {
|
||||
const variationRows = page.locator( '.woocommerce_variation h3' );
|
||||
let variationRowsCount = await variationRows.count();
|
||||
const originalVariationRowsCount = variationRowsCount;
|
||||
|
||||
for ( const variationToCreate of variationsToManuallyCreate ) {
|
||||
await test.step( 'Click "Add manually"', async () => {
|
||||
const addManuallyButton = page.getByRole( 'button', {
|
||||
name: 'Add manually',
|
||||
} );
|
||||
|
||||
await addManuallyButton.click();
|
||||
|
||||
await expect( variationRows ).toHaveCount(
|
||||
++variationRowsCount
|
||||
);
|
||||
|
||||
// verify that the woocommerce_variations_added jQuery trigger was fired
|
||||
const woocommerceVariationsAddedFunctionCalls =
|
||||
await page.evaluate(
|
||||
() => window.woocommerceVariationsAddedFunctionCalls
|
||||
window
|
||||
.jQuery( '#variable_product_options' )
|
||||
.on(
|
||||
'woocommerce_variations_added',
|
||||
( event, data ) => {
|
||||
window.woocommerceVariationsAddedFunctionCalls.push(
|
||||
[ event, data ]
|
||||
);
|
||||
}
|
||||
);
|
||||
expect(
|
||||
woocommerceVariationsAddedFunctionCalls.length
|
||||
).toEqual(
|
||||
variationRowsCount - originalVariationRowsCount
|
||||
);
|
||||
} );
|
||||
} );
|
||||
|
||||
for ( const attributeValue of variationToCreate ) {
|
||||
const attributeName = productAttributes.find(
|
||||
( { options } ) => options.includes( attributeValue )
|
||||
).name;
|
||||
const addAttributeMenu = variationRows
|
||||
.nth( 0 )
|
||||
.locator( 'select', {
|
||||
has: page.locator( 'option', {
|
||||
hasText: attributeValue,
|
||||
} ),
|
||||
await test.step( 'Click on the "Variations" tab.', async () => {
|
||||
await page.locator( '.variations_tab' ).click();
|
||||
} );
|
||||
|
||||
await test.step( `Manually add ${ variationsToManuallyCreate.length } variations`, async () => {
|
||||
const variationRows = page.locator(
|
||||
'.woocommerce_variation h3'
|
||||
);
|
||||
let variationRowsCount = await variationRows.count();
|
||||
const originalVariationRowsCount = variationRowsCount;
|
||||
|
||||
for ( const variationToCreate of variationsToManuallyCreate ) {
|
||||
await test.step( 'Click "Add manually"', async () => {
|
||||
const addManuallyButton = page.getByRole( 'button', {
|
||||
name: 'Add manually',
|
||||
} );
|
||||
|
||||
await test.step( `Select "${ attributeValue }" from the "${ attributeName }" attribute menu`, async () => {
|
||||
await addAttributeMenu.selectOption( attributeValue );
|
||||
await addManuallyButton.click();
|
||||
|
||||
await expect( variationRows ).toHaveCount(
|
||||
++variationRowsCount
|
||||
);
|
||||
|
||||
// verify that the woocommerce_variations_added jQuery trigger was fired
|
||||
const woocommerceVariationsAddedFunctionCalls =
|
||||
await page.evaluate(
|
||||
() =>
|
||||
window.woocommerceVariationsAddedFunctionCalls
|
||||
);
|
||||
expect(
|
||||
woocommerceVariationsAddedFunctionCalls.length
|
||||
).toEqual(
|
||||
variationRowsCount - originalVariationRowsCount
|
||||
);
|
||||
} );
|
||||
}
|
||||
|
||||
await test.step( 'Click "Save changes"', async () => {
|
||||
await page
|
||||
.getByRole( 'button', {
|
||||
name: 'Save changes',
|
||||
} )
|
||||
.click();
|
||||
} );
|
||||
|
||||
await test.step( `Expect the variation ${ variationToCreate.join(
|
||||
', '
|
||||
) } to be successfully saved.`, async () => {
|
||||
let newlyAddedVariationRow;
|
||||
|
||||
for ( const attributeValue of variationToCreate ) {
|
||||
newlyAddedVariationRow = (
|
||||
newlyAddedVariationRow || variationRows
|
||||
).filter( {
|
||||
has: page.locator( 'option[selected]', {
|
||||
hasText: attributeValue,
|
||||
} ),
|
||||
const attributeName = productAttributes.find(
|
||||
( { options } ) =>
|
||||
options.includes( attributeValue )
|
||||
).name;
|
||||
const addAttributeMenu = variationRows
|
||||
.nth( 0 )
|
||||
.locator( 'select', {
|
||||
has: page.locator( 'option', {
|
||||
hasText: attributeValue,
|
||||
} ),
|
||||
} );
|
||||
|
||||
await test.step( `Select "${ attributeValue }" from the "${ attributeName }" attribute menu`, async () => {
|
||||
await addAttributeMenu.selectOption(
|
||||
attributeValue
|
||||
);
|
||||
} );
|
||||
}
|
||||
|
||||
await expect( newlyAddedVariationRow ).toBeVisible();
|
||||
} );
|
||||
}
|
||||
} );
|
||||
} );
|
||||
await test.step( 'Click "Save changes"', async () => {
|
||||
await page
|
||||
.getByRole( 'button', {
|
||||
name: 'Save changes',
|
||||
} )
|
||||
.click();
|
||||
} );
|
||||
|
||||
await test.step( `Expect the variation ${ variationToCreate.join(
|
||||
', '
|
||||
) } to be successfully saved.`, async () => {
|
||||
let newlyAddedVariationRow;
|
||||
|
||||
for ( const attributeValue of variationToCreate ) {
|
||||
newlyAddedVariationRow = (
|
||||
newlyAddedVariationRow || variationRows
|
||||
).filter( {
|
||||
has: page.locator( 'option[selected]', {
|
||||
hasText: attributeValue,
|
||||
} ),
|
||||
} );
|
||||
}
|
||||
|
||||
await expect( newlyAddedVariationRow ).toBeVisible();
|
||||
} );
|
||||
}
|
||||
} );
|
||||
}
|
||||
);
|
||||
} );
|
||||
|
|
Loading…
Reference in New Issue