mirror of
https://github.com/sstent/foodplanner.git
synced 2025-12-05 23:51:46 +00:00
52 lines
3.4 KiB
Plaintext
52 lines
3.4 KiB
Plaintext
const { test, expect } = require('@playwright/test');
|
|
|
|
test('create food', async ({ page }) => {
|
|
await page.goto('/foods');
|
|
|
|
// Create a new food
|
|
await page.getByRole('button', { name: ' Add New Food' }).click();
|
|
await page.getByRole('dialog', { name: 'Add New Food' }).locator('input[name="name"]').fill('TESTFOOD');
|
|
await page.getByRole('dialog', { name: 'Add New Food' }).locator('input[name="name"]').press('Tab');
|
|
await page.getByRole('textbox', { name: 'Optional' }).press('Tab');
|
|
await page.getByRole('dialog', { name: 'Add New Food' }).locator('input[name="serving_size"]').fill('100');
|
|
await page.getByRole('dialog', { name: 'Add New Food' }).locator('input[name="serving_size"]').press('Tab');
|
|
await page.getByRole('dialog', { name: 'Add New Food' }).locator('input[name="serving_unit"]').fill('g');
|
|
await page.getByRole('dialog', { name: 'Add New Food' }).locator('input[name="serving_unit"]').press('Tab');
|
|
await page.getByRole('dialog', { name: 'Add New Food' }).locator('input[name="calories"]').fill('1');
|
|
await page.getByRole('dialog', { name: 'Add New Food' }).locator('input[name="calories"]').press('Tab');
|
|
await page.getByRole('dialog', { name: 'Add New Food' }).locator('input[name="protein"]').fill('1');
|
|
await page.getByRole('dialog', { name: 'Add New Food' }).locator('input[name="protein"]').press('Tab');
|
|
await page.getByRole('dialog', { name: 'Add New Food' }).locator('input[name="carbs"]').fill('1');
|
|
await page.getByRole('dialog', { name: 'Add New Food' }).locator('input[name="carbs"]').press('Tab');
|
|
await page.getByRole('dialog', { name: 'Add New Food' }).locator('input[name="fat"]').fill('2');
|
|
await page.getByRole('dialog', { name: 'Add New Food' }).locator('input[name="fat"]').press('Tab');
|
|
await page.getByRole('dialog', { name: 'Add New Food' }).locator('input[name="fiber"]').fill('2');
|
|
await page.getByRole('dialog', { name: 'Add New Food' }).locator('input[name="fiber"]').press('Tab');
|
|
await page.getByRole('dialog', { name: 'Add New Food' }).locator('input[name="sugar"]').fill('4');
|
|
await page.getByRole('dialog', { name: 'Add New Food' }).locator('input[name="sugar"]').press('Tab');
|
|
await page.getByRole('dialog', { name: 'Add New Food' }).locator('input[name="sodium"]').fill('5');
|
|
await page.getByRole('dialog', { name: 'Add New Food' }).locator('input[name="sodium"]').press('Tab');
|
|
await page.getByRole('dialog', { name: 'Add New Food' }).locator('input[name="calcium"]').fill('5');
|
|
await page.getByRole('button', { name: 'Add Food' }).click();
|
|
|
|
// Verify the food was created
|
|
const newFoodRow = page.getByRole('row').filter({ hasText: 'TESTFOOD' });
|
|
await expect(newFoodRow).toBeVisible();
|
|
|
|
|
|
await page.getByRole('row', { name: 'TESTFOOD 100.0 g 1.00 1.00g 1' }).getByRole('button').click();
|
|
await page.locator('#edit_serving_size').click();
|
|
await page.locator('#edit_serving_size').fill('200');
|
|
await page.getByRole('button', { name: 'Update Food' }).click();
|
|
|
|
//delete it
|
|
await page.getByRole('row', { name: 'TESTFOOD 200.0 g 1.00 1.00g 1' }).getByRole('checkbox').check();
|
|
// Set up dialog handler BEFORE clicking delete
|
|
page.on('dialog', async dialog => {
|
|
console.log(`Dialog message: ${dialog.message()}`);
|
|
await dialog.accept(); // or dialog.dismiss()
|
|
});
|
|
await page.getByRole('button', { name: ' Delete Selected Foods' }).click();
|
|
await expect(page.getByRole('row', { name: /Test Food/ })).not.toBeVisible();
|
|
|
|
}); |