woocommerce/plugins/woocommerce-blocks/tests/e2e/specs/backend/reviews-by-product.test.js

63 lines
1.6 KiB
JavaScript

/**
* External dependencies
*/
import { switchUserToAdmin, clickButton } from '@wordpress/e2e-test-utils';
import { visitBlockPage } from '@woocommerce/blocks-test-utils';
const block = {
name: 'Reviews by Product',
slug: 'woocommerce/reviews-by-product',
class: '.wc-block-reviews-by-product',
};
describe( `${ block.name } Block`, () => {
beforeAll( async () => {
await switchUserToAdmin();
await visitBlockPage( `${ block.name } Block` );
} );
it( 'renders without crashing', async () => {
await expect( page ).toRenderBlock( block );
} );
it( 'shows product selector', async () => {
await expect( page ).toMatchElement(
`${ block.class } .woocommerce-search-list`
);
} );
it( 'can select a product and show reviews', async () => {
// we focus on the block
await page.click( block.class );
await page.waitForSelector(
`${ block.class } .woocommerce-search-list__item`
);
do {
await page.click(
`${ block.class } .woocommerce-search-list__item`
);
} while (
await page.evaluate(
( blockClass ) =>
document
.querySelector(
`${ blockClass } .woocommerce-search-list__item`
)
.getAttribute( 'aria-checked' ) === 'false',
block.class
)
);
await clickButton( 'Done' );
// Selected.
await page.waitForSelector(
'.wc-block-review-list .wc-block-review-list-item__item:not(.is-loading)'
);
expect(
await page.$$eval(
'.wc-block-review-list .wc-block-review-list-item__item',
( reviews ) => reviews.length
)
).toBeGreaterThanOrEqual( 3 ); // Fixture data has three reviews per product.
} );
} );