diff --git a/tests/createOffer.spec.js b/tests/createOffer.spec.js index 236610f..a64c0de 100644 --- a/tests/createOffer.spec.js +++ b/tests/createOffer.spec.js @@ -5,9 +5,7 @@ const SessionRelatedToPublickey = require('../src/models/SessionRelatedToPublick const NymSet = require('../src/models/NymSet'); const ContactDetailsSet = require('../src/models/ContactDetailsSet'); -const sessionService = require('../src/services/sessionService'); - -test('Mock records are present', async ({ page }) => { +test('Mock records are present', async () => { for (const someModel of [ SessionCreated, SessionRelatedToPublickey, @@ -28,12 +26,60 @@ test('Hardcoded session cookie is there', async ({ context }) => { test('Offers is reachable', async ({ context }) => { const page = await context.newPage(); - const cookiez = await page.context().cookies(); - await page.pause(); await page.goto('http://localhost/offers'); - const createOfferButton = page.locator('#button-start-create-offer'); await expect(createOfferButton).toBeVisible(); await expect(createOfferButton).toContainText('Crear nueva oferta'); }); + +test('Create an offer with a few options creates in DB', async ({ + context, +}) => { + const page = await context.newPage(); + await page.goto('http://localhost/offers'); + + await page.getByRole('button', { name: 'Crear nueva oferta' }).click(); + await page.getByRole('button', { name: 'Quiero vender Bitcoin' }).click(); + await page.getByRole('button', { name: 'Quiero comprar Bitcoin' }).click(); + await page.getByRole('button', { name: '+' }).click(); + await page.getByRole('button', { name: '+' }).click(); + await page.getByRole('button', { name: '+' }).click(); + await page.getByRole('button', { name: '-' }).click(); + await expect(page.locator('#premium-value')).toContainText('2%'); + await page.locator('#input-eur-amount').click(); + await page.locator('#input-eur-amount').press('ControlOrMeta+a'); + await page.locator('#input-eur-amount').fill('50'); + await expect(page.locator('#input-eur-amount')).toHaveValue('50'); + await page + .getByText( + 'Añade los detalles de tu oferta Quiero comprar Bitcoin Quiero vender Bitcoin' + ) + .click(); + await page + .getByRole('textbox', { name: '¿Dónde? Ej."Eixample", "La' }) + .click(); + await page + .getByRole('textbox', { name: '¿Dónde? Ej."Eixample", "La' }) + .fill('En algún lugar'); + await page + .getByRole('textbox', { name: '¿Cuándo? Ej."Cualquier hora' }) + .click(); + await page + .getByRole('textbox', { name: '¿Cuándo? Ej."Cualquier hora' }) + .fill('En algún momento'); + await page.locator('#onchain-checkbox').uncheck(); + await expect(page.locator('#onchain-checkbox')).not.toBeChecked(); + await expect(page.locator('#lightning-checkbox')).toBeChecked(); + await page.locator('#input-eur-amount').click(); + await page.locator('#my-trusted-trusted-checkbox').uncheck(); + await page.locator('#all-members-checkbox').check(); + await page.locator('#my-trusted-trusted-checkbox').check(); + await page.locator('#all-members-checkbox').uncheck(); + await page.locator('#large-bills-checkbox').check(); + await page.getByRole('button', { name: 'Publicar oferta' }).click(); + await page.locator('#close-offer-controls-x').click(); + await expect(page.locator('#offers-root')).toMatchAriaSnapshot( + `- button "Crear nueva oferta"` + ); +}); diff --git a/tests/recorderHelper.spec.js b/tests/recorderHelper.spec.js new file mode 100644 index 0000000..2c87c21 --- /dev/null +++ b/tests/recorderHelper.spec.js @@ -0,0 +1,27 @@ +// You can uncomment this below to open a recorder page + +/* +const { chromium } = require('playwright'); +test('Mock records are present', async () => { + const browser = await chromium.launch({ headless: false }); + const context = await browser.newContext(); + await context.addCookies([ + { + name: 'sessionUuid', + value: hardcodedSessionUuid, + domain: 'localhost', + path: '/', + expires: Math.floor( + new Date(new Date().setMonth(new Date().getMonth() + 1)).getTime() / + 1000 + ), //This monster is this day next month, turned into epoch format + httpOnly: true, + secure: false, + sameSite: 'Lax', + }, + ]); + + const page = await context.newPage(); + await page.goto('http://localhost'); +}); +*/ diff --git a/tests/test-setup.js b/tests/test-setup.js index 5e9c7be..3d4b669 100644 --- a/tests/test-setup.js +++ b/tests/test-setup.js @@ -1,4 +1,4 @@ -import { test } from '@playwright/test'; +const { test, expect } = require('@playwright/test'); const SessionCreated = require('../src/models/SessionCreated'); const SessionRelatedToPublickey = require('../src/models/SessionRelatedToPublickey'); @@ -9,7 +9,7 @@ const hardcodedSessionUuid = '0195423c-33d7-75f8-921b-a06e6d3cb8c5'; const hardcodedPublicKey = 'd3d4c49e7bdbbbf3082151add080e92f9a458d5dec993b371fe6d02cd394d57a'; -test.beforeEach(async ({ context }) => { +test.beforeEach(async () => { for (const someModel of [ SessionCreated, SessionRelatedToPublickey, @@ -69,5 +69,4 @@ test.beforeEach(async ({ context }) => { ]); }); -export { test, expect } from '@playwright/test'; -export { hardcodedSessionUuid }; +module.exports = { test, expect, hardcodedSessionUuid };