2022-05-24 14:25:15 -07:00
|
|
|
import test, { expect } from '@playwright/test'
|
|
|
|
import {
|
|
|
|
createTypebots,
|
|
|
|
parseDefaultBlockWithStep,
|
|
|
|
} from '../../services/database'
|
|
|
|
import { defaultPaymentInputOptions, InputStepType } from 'models'
|
|
|
|
import cuid from 'cuid'
|
|
|
|
import { stripePaymentForm, typebotViewer } from '../../services/selectorUtils'
|
|
|
|
|
|
|
|
test.describe('Payment input step', () => {
|
|
|
|
test('Can configure Stripe account', async ({ page }) => {
|
|
|
|
const typebotId = cuid()
|
|
|
|
await createTypebots([
|
|
|
|
{
|
|
|
|
id: typebotId,
|
|
|
|
...parseDefaultBlockWithStep({
|
|
|
|
type: InputStepType.PAYMENT,
|
|
|
|
options: defaultPaymentInputOptions,
|
|
|
|
}),
|
|
|
|
},
|
|
|
|
])
|
|
|
|
|
|
|
|
await page.goto(`/typebots/${typebotId}/edit`)
|
|
|
|
await page.click('text=Configure...')
|
|
|
|
await page.click('text=Select an account')
|
|
|
|
await page.click('text=Connect new')
|
|
|
|
await page.fill('[placeholder="Typebot"]', 'My Stripe Account')
|
|
|
|
await page.fill(
|
|
|
|
'[placeholder="sk_test_..."]',
|
|
|
|
process.env.STRIPE_TEST_SECRET_KEY ?? ''
|
|
|
|
)
|
|
|
|
await page.fill(
|
|
|
|
'[placeholder="sk_live_..."]',
|
|
|
|
process.env.STRIPE_TEST_SECRET_KEY ?? ''
|
|
|
|
)
|
|
|
|
await page.fill(
|
|
|
|
'[placeholder="pk_test_..."]',
|
|
|
|
process.env.STRIPE_TEST_PUBLIC_KEY ?? ''
|
|
|
|
)
|
|
|
|
await page.fill(
|
|
|
|
'[placeholder="pk_live_..."]',
|
|
|
|
process.env.STRIPE_TEST_PUBLIC_KEY ?? ''
|
|
|
|
)
|
|
|
|
await expect(page.locator('button >> text="Connect"')).toBeEnabled()
|
|
|
|
await page.click('button >> text="Connect"')
|
|
|
|
await expect(page.locator('text="Secret test key:"')).toBeHidden()
|
|
|
|
await expect(page.locator('text="My Stripe Account"')).toBeVisible()
|
|
|
|
await page.fill('[placeholder="30.00"] >> nth=-1', '30.00')
|
2022-05-27 09:55:51 -07:00
|
|
|
await page.selectOption('select', 'EUR')
|
2022-05-24 14:25:15 -07:00
|
|
|
await page.click('text=Additional information')
|
|
|
|
await page.fill('[placeholder="John Smith"]', 'Baptiste')
|
|
|
|
await page.fill('[placeholder="john@gmail.com"]', 'baptiste@typebot.io')
|
|
|
|
await expect(page.locator('text="Phone number:"')).toBeVisible()
|
|
|
|
|
|
|
|
await page.click('text=Preview')
|
|
|
|
await stripePaymentForm(page)
|
|
|
|
.locator(`[placeholder="1234 1234 1234 1234"]`)
|
|
|
|
.fill('4000000000000002')
|
|
|
|
await stripePaymentForm(page)
|
|
|
|
.locator(`[placeholder="MM / YY"]`)
|
|
|
|
.fill('12 / 25')
|
|
|
|
await stripePaymentForm(page).locator(`[placeholder="CVC"]`).fill('240')
|
2022-05-27 09:55:51 -07:00
|
|
|
await typebotViewer(page).locator(`text="Pay 30€"`).click()
|
2022-05-24 14:25:15 -07:00
|
|
|
await expect(
|
|
|
|
typebotViewer(page).locator(`text="Your card was declined."`)
|
|
|
|
).toBeVisible()
|
|
|
|
await stripePaymentForm(page)
|
|
|
|
.locator(`[placeholder="1234 1234 1234 1234"]`)
|
|
|
|
.fill('4242424242424242')
|
2022-05-27 09:55:51 -07:00
|
|
|
await typebotViewer(page).locator(`text="Pay 30€"`).click()
|
2022-05-24 14:25:15 -07:00
|
|
|
await expect(typebotViewer(page).locator(`text="Success"`)).toBeVisible()
|
|
|
|
})
|
|
|
|
})
|