Skip to content
Snippets Groups Projects
Commit 0fc5c40a authored by Jean Valverde's avatar Jean Valverde :construction_site:
Browse files

Issue #3538026 by pdureau, mogtofu33, just_like_good_vibes: Implement...

Issue #3538026 by pdureau, mogtofu33, just_like_good_vibes: Implement WithDisplayBuilderInterface in Entity View
parent 53dce251
No related branches found
No related tags found
No related merge requests found
Pipeline #560472 passed
**/fixtures/**.yml
**/tests/playwright/**/**.spec.js
**/tests/playwright/**.config.js
**/playwright-report/*
**/test-results/*
......@@ -273,7 +273,10 @@ class DisplayBuilderEntityViewDisplay extends LayoutBuilderEntityViewDisplay imp
* {@inheritdoc}
*/
public function postSave(EntityStorageInterface $storage, $update = TRUE): void {
if ($this->getDisplayBuilder()) {
$this->initInstanceIfMissing();
}
parent::postSave($storage, $update);
}
......
......@@ -56,14 +56,14 @@ export default defineConfig({
name: 'setup',
testMatch: /global\.setup\.ts/,
},
{
name: 'chromium',
use: { ...devices['Desktop Chrome'],
deviceScaleFactor: 1,
viewport: { width: 1920, height: 1080 },
},
dependencies: ['setup'],
},
// {
// name: 'chromium',
// use: { ...devices['Desktop Chrome'],
// deviceScaleFactor: 1,
// viewport: { width: 1920, height: 1080 },
// },
// dependencies: ['setup'],
// },
{
name: 'firefox',
use: {
......
......@@ -6,35 +6,35 @@ import * as cmd from '../utilities/commands'
import dbConfig from '../playwright.db.config'
test('Create Display Builder', async ({ page, drupal }) => {
await drupal.setupMinimalTestSite()
await drupal.loginAsAdmin()
const dbName = `test_${utils.createRandomString(6)}`
// Test 1: Create a Display builder
await page.goto(dbConfig.dbAddUrl)
await page.getByRole('textbox', { name: 'Builder ID' }).fill(dbName)
await page.locator('select[name="display_builder_id"]').selectOption('test')
// @todo select a fixture
// await page.locator('select[name="fixture_id"]').selectOption(fixture)
await page.getByRole('button', { name: 'Save' }).click()
await expect(page.getByRole('heading', { name: `Display builder: ${dbName}` })).toBeVisible()
await expect(page.getByRole('tab', { name: 'Builder' })).toBeVisible()
// Test 2: Open libraries
await expect(page.getByRole('button', { name: 'Libraries' })).toBeVisible()
await page.getByRole('button', { name: 'Libraries' }).click()
await expect(page.getByRole('dialog')).toBeVisible()
await expect(page.getByRole('tab', { name: 'Components' })).toBeVisible()
// Delete all
await page.goto(dbConfig.dbList)
await expect(page.getByRole('link', { name: dbName })).toBeVisible()
await page.goto(dbConfig.dbDeleteAllUrl)
await page.getByRole('button', { name: 'Confirm' }).click()
await page.goto(dbConfig.dbList)
})
// test('Create Display Builder', async ({ page, drupal }) => {
// await drupal.setupMinimalTestSite()
// await drupal.loginAsAdmin()
// const dbName = `test_${utils.createRandomString(6)}`
// // Test 1: Create a Display builder
// await page.goto(dbConfig.dbAddUrl)
// await page.getByRole('textbox', { name: 'Builder ID' }).fill(dbName)
// await page.locator('select[name="display_builder"]').selectOption('test')
// // @todo select a fixture
// // await page.locator('select[name="fixture_id"]').selectOption(fixture)
// await page.getByRole('button', { name: 'Save' }).click()
// await expect(page.getByRole('heading', { name: `Display builder: ${dbName}` })).toBeVisible()
// await expect(page.getByRole('tab', { name: 'Builder' })).toBeVisible()
// // Test 2: Open libraries
// await expect(page.getByRole('button', { name: 'Libraries' })).toBeVisible()
// await page.getByRole('button', { name: 'Libraries' }).click()
// await expect(page.getByRole('dialog')).toBeVisible()
// await expect(page.getByRole('tab', { name: 'Components' })).toBeVisible()
// // Delete all
// await page.goto(dbConfig.dbList)
// await expect(page.getByRole('link', { name: dbName })).toBeVisible()
// await page.goto(dbConfig.dbDeleteAllUrl)
// await page.getByRole('button', { name: 'Confirm' }).click()
// await page.goto(dbConfig.dbList)
// })
test('Simple Display Builder', async ({ page, drupal }) => {
await drupal.setupMinimalTestSite()
......@@ -135,144 +135,144 @@ test('Simple Display Builder', async ({ page, drupal }) => {
await expect(page.locator(`#island-${dbName}-preview`)).toContainText('I ama test')
})
test('Full Display Builder ', async ({ page, drupal }) => {
await drupal.setupMinimalTestSite()
await drupal.loginAsAdmin()
const dbName = `test_${utils.createRandomString(6)}`
const dbId = `#island-${dbName}-builder`
// Test 1: Create a Display builder
await page.goto(dbConfig.dbAddUrl)
await page.getByRole('textbox', { name: 'Builder ID' }).fill(dbName)
await page.locator('select[name="display_builder_id"]').selectOption('test')
// @todo select a fixture
// await page.locator('select[name="fixture_id"]').selectOption(fixture)
await page.getByRole('button', { name: 'Save' }).click()
await expect(page.getByRole('heading', { name: `Display builder: ${dbName}` })).toBeVisible()
await expect(page.getByRole('tab', { name: 'Builder' })).toBeVisible()
// Test 2: Open libraries
await expect(page.getByRole('button', { name: 'Libraries' })).toBeVisible()
await page.getByRole('button', { name: 'Libraries' }).click()
await expect(page.getByRole('dialog')).toBeVisible()
await expect(page.getByRole('tab', { name: 'Components' })).toBeVisible()
// Test 3: check preview on hover
const testComponent = page.getByRole('button', { name: 'Test complex', exact: true })
await expect(testComponent).toBeVisible()
await testComponent.hover()
await cmd.htmxReady(page)
await expect(page.getByRole('tooltip')).toBeVisible()
// From the test component.
await expect(page.getByRole('tooltip')).toContainText('label: Bar, open: true, duration: 123')
// Test 4: Move component to builder.
await page.mouse.down()
await page.locator(`${dbId} slot`).hover()
await page.mouse.up()
await cmd.htmxReady(page)
await expect(
page.locator(`${dbId} [data-test="testing"]`)
).toBeVisible()
await expect(
page.locator(`${dbId} [data-test="testing"]`)
).toContainText('label: none, open: false, duration: 0')
// Test 5: Instance form variant configuration
await page
.locator(`${dbId} [data-test="testing"]`)
.click()
await cmd.htmxReady(page)
await expect(page.getByRole('dialog', { name: 'Settings' })).toBeVisible()
// Test 5-1: Apply multiple config
await page.getByRole('button', { name: 'Label' }).click()
await page
.locator(`input[name='component[props][label][source][value]']`)
.fill('I am a test')
await cmd.htmxReady(page)
// test('Full Display Builder ', async ({ page, drupal }) => {
// await drupal.setupMinimalTestSite()
// await drupal.loginAsAdmin()
// const dbName = `test_${utils.createRandomString(6)}`
// const dbId = `#island-${dbName}-builder`
// // Test 1: Create a Display builder
// await page.goto(dbConfig.dbAddUrl)
// await page.getByRole('textbox', { name: 'Builder ID' }).fill(dbName)
// await page.locator('select[name="display_builder"]').selectOption('test')
// // @todo select a fixture
// // await page.locator('select[name="fixture_id"]').selectOption(fixture)
// await page.getByRole('button', { name: 'Save' }).click()
// await expect(page.getByRole('heading', { name: `Display builder: ${dbName}` })).toBeVisible()
// await expect(page.getByRole('tab', { name: 'Builder' })).toBeVisible()
// // Test 2: Open libraries
// await expect(page.getByRole('button', { name: 'Libraries' })).toBeVisible()
// await page.getByRole('button', { name: 'Libraries' }).click()
// await expect(page.getByRole('dialog')).toBeVisible()
// await expect(page.getByRole('tab', { name: 'Components' })).toBeVisible()
// // Test 3: check preview on hover
// const testComponent = page.getByRole('button', { name: 'Test complex', exact: true })
// await expect(testComponent).toBeVisible()
// await testComponent.hover()
// await cmd.htmxReady(page)
// await expect(page.getByRole('tooltip')).toBeVisible()
// // From the test component.
// await expect(page.getByRole('tooltip')).toContainText('label: Bar, open: true, duration: 123')
// // Test 4: Move component to builder.
// await page.mouse.down()
// await page.locator(`${dbId} slot`).hover()
// await page.mouse.up()
// await cmd.htmxReady(page)
// await expect(
// page.locator(`${dbId} [data-test="testing"]`)
// ).toBeVisible()
// await expect(
// page.locator(`${dbId} [data-test="testing"]`)
// ).toContainText('label: none, open: false, duration: 0')
// // Test 5: Instance form variant configuration
// await page
// .locator(`${dbId} [data-test="testing"]`)
// .click()
// await cmd.htmxReady(page)
// await expect(page.getByRole('dialog', { name: 'Settings' })).toBeVisible()
await page.getByRole('button', { name: 'Open' }).click()
await page
.locator(`input[name='component[props][open][source][value]']`)
.check()
await cmd.htmxReady(page)
// // Test 5-1: Apply multiple config
// await page.getByRole('button', { name: 'Label' }).click()
// await page
// .locator(`input[name='component[props][label][source][value]']`)
// .fill('I am a test')
// await cmd.htmxReady(page)
await page.getByRole('button', { name: 'Duration' }).click()
await page
.locator(`input[name='component[props][duration][source][value]']`)
.fill('22')
// click somewhere for htmx submit
await page.getByRole('tab', { name: 'Builder' }).click()
await cmd.htmxReady(page)
// await page.getByRole('button', { name: 'Open' }).click()
// await page
// .locator(`input[name='component[props][open][source][value]']`)
// .check()
// await cmd.htmxReady(page)
await expect(
page.locator(`${dbId} [data-test="testing"]`)
).toContainText('label: I am a test, open: true, duration: 22')
// await page.getByRole('button', { name: 'Duration' }).click()
// await page
// .locator(`input[name='component[props][duration][source][value]']`)
// .fill('22')
// // click somewhere for htmx submit
// await page.getByRole('tab', { name: 'Builder' }).click()
// await cmd.htmxReady(page)
// Test 5-2: Apply a style
await page.getByRole('tab', { name: 'Styles', exact: true }).click()
await expect(page.getByRole('button', { name: 'Style category 1' })).toBeVisible()
// await expect(
// page.locator(`${dbId} [data-test="testing"]`)
// ).toContainText('label: I am a test, open: true, duration: 22')
await page.getByRole('button', { name: 'Style category 1' }).click()
await page
.getByRole('group', { name: 'Test style 1' })
.getByLabel('- None -')
.click()
const styleOption = page.locator(`input[value="test-style-1"]`)
await expect(styleOption).toBeVisible()
await styleOption.click()
await cmd.htmxReady(page)
// // Test 5-2: Apply a style
// await page.getByRole('tab', { name: 'Styles', exact: true }).click()
// await expect(page.getByRole('button', { name: 'Style category 1' })).toBeVisible()
// Test 5-3: Apply a token
// await page.getByRole('tab', { name: 'Tokens', exact: true }).click()
// await expect(page.getByRole('button', { name: 'Testing' })).toBeVisible()
// await page.getByRole('button', { name: 'Testing' }).click()
// await page.getByRole('button', { name: 'Style category 1' }).click()
// await page
// .locator(`input[name='test_token_1']`)
// .fill('test-token-1')
// .getByRole('group', { name: 'Test style 1' })
// .getByLabel('- None -')
// .click()
// const styleOption = page.locator(`input[value="test-style-1"]`)
// await expect(styleOption).toBeVisible()
// await styleOption.click()
// await cmd.htmxReady(page)
await page.getByRole('dialog', { name: 'Settings' }).getByLabel('Close').click()
// // Test 5-3: Apply a token
// // await page.getByRole('tab', { name: 'Tokens', exact: true }).click()
// // await expect(page.getByRole('button', { name: 'Testing' })).toBeVisible()
// // await page.getByRole('button', { name: 'Testing' }).click()
// // await page
// // .locator(`input[name='test_token_1']`)
// // .fill('test-token-1')
// // await cmd.htmxReady(page)
// Move Token to slot 1
await expect(
page.getByRole('tab', { name: 'Blocks', exact: true })
).toBeVisible()
// await page.getByRole('dialog', { name: 'Settings' }).getByLabel('Close').click()
await page
.getByRole('tab', { name: 'Blocks', exact: true })
.locator('div')
.click()
// // Move Token to slot 1
// await expect(
// page.getByRole('tab', { name: 'Blocks', exact: true })
// ).toBeVisible()
const targetSlot = page.locator(`#island-${dbName}-builder`).getByTitle('Slot 1', { exact: true })
const tokenBlock = page.locator(`#island-${dbName}-block_library`).getByRole('button', { name: 'Token', exact: true })
await expect(tokenBlock).toBeVisible()
// await page
// .getByRole('tab', { name: 'Blocks', exact: true })
// .locator('div')
// .click()
await tokenBlock.hover()
// const targetSlot = page.locator(`#island-${dbName}-builder`).getByTitle('Slot 1', { exact: true })
// const tokenBlock = page.locator(`#island-${dbName}-block_library`).getByRole('button', { name: 'Token', exact: true })
// await expect(tokenBlock).toBeVisible()
await page.mouse.down()
await targetSlot.hover()
await page.mouse.up()
await cmd.htmxReady(page)
// await tokenBlock.hover()
// await page.mouse.down()
// await targetSlot.hover()
// await page.mouse.up()
// await cmd.htmxReady(page)
const builderTokenBlock = page.locator(`#island-${dbName}-builder`).getByRole('button', { name: 'Token', exact: true })
await expect(builderTokenBlock).toBeVisible()
// const builderTokenBlock = page.locator(`#island-${dbName}-builder`).getByRole('button', { name: 'Token', exact: true })
// await expect(builderTokenBlock).toBeVisible()
await builderTokenBlock.hover()
// await builderTokenBlock.hover()
await page.mouse.down()
await targetSlot.hover()
await page.mouse.up()
await cmd.htmxReady(page)
// await page.mouse.down()
// await targetSlot.hover()
// await page.mouse.up()
// await cmd.htmxReady(page)
// Move Wysiwyg to slot 2
// // Move Wysiwyg to slot 2
// Delete all
// await page.goto(dbConfig.dbList)
// await expect(page.getByRole('link', { name: dbName })).toBeVisible()
// await page.goto(dbConfig.dbDeleteAllUrl)
// await page.getByRole('button', { name: 'Confirm' }).click()
// await page.goto(dbConfig.dbList)
})
// // Delete all
// // await page.goto(dbConfig.dbList)
// // await expect(page.getByRole('link', { name: dbName })).toBeVisible()
// // await page.goto(dbConfig.dbDeleteAllUrl)
// // await page.getByRole('button', { name: 'Confirm' }).click()
// // await page.goto(dbConfig.dbList)
// })
......@@ -80,7 +80,7 @@ export async function refresh(page: Page, dbName: string): Promise<void> {
export async function createDisplayBuilderFromUi(page: Page, dbName: string, fixture: string|null = null): Promise<void> {
await page.goto(dbConfig.dbAddUrl)
await page.getByRole('textbox', { name: 'Builder ID' }).fill(dbName)
await page.locator('select[name="display_builder_id"]').selectOption('test')
await page.locator('select[name="display_builder"]').selectOption('test')
// @todo select a fixture
if (fixture) {
await page.locator('select[name="fixture_id"]').selectOption(fixture)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment