feat(ui): wire the chip-pack purchase to Robokassa
Replace the disabled "Soon" pack action with a real purchase: the Wallet opens a money order (wallet.order) and sends the player to the provider's hosted-payment page (window.open via openExternalUrl); the chips are credited later by the verified server callback. Add a public-offer link under the packs (paying accepts the offer). Codec order round-trip unit test + a mock-e2e purchase test; the Google Play stub and the chip-spend paths are unchanged.
This commit is contained in:
+21
-2
@@ -37,8 +37,27 @@ test('wallet: balances, benefits and the storefront render for a durable account
|
||||
await expect(page.getByTestId('product')).toHaveCount(3);
|
||||
const pack = page.locator('[data-kind="pack"]');
|
||||
await expect(pack).toContainText('₽');
|
||||
// The pack purchase (money intake) is not wired yet, so its action is the disabled 'Soon'.
|
||||
await expect(pack.getByRole('button', { name: 'Soon' })).toBeDisabled();
|
||||
// The pack purchase is wired to money intake: an enabled Buy action, with the public-offer link.
|
||||
await expect(pack.getByTestId('buy-pack')).toBeEnabled();
|
||||
await expect(page.getByTestId('offer')).toContainText('Public offer');
|
||||
});
|
||||
|
||||
test('wallet: buying a chip pack opens the provider payment page', async ({ page }) => {
|
||||
await loginLobby(page);
|
||||
await openWallet(page);
|
||||
|
||||
// The purchase opens the provider's hosted-payment page in a new tab (window.open); capture it.
|
||||
await page.evaluate(() => {
|
||||
(window as { __opened?: string }).__opened = '';
|
||||
window.open = ((u: string) => {
|
||||
(window as { __opened?: string }).__opened = u;
|
||||
return null;
|
||||
}) as typeof window.open;
|
||||
});
|
||||
await page.locator('[data-kind="pack"]').getByTestId('buy-pack').click();
|
||||
await expect
|
||||
.poll(() => page.evaluate(() => (window as { __opened?: string }).__opened))
|
||||
.toContain('robokassa');
|
||||
});
|
||||
|
||||
test('wallet: the tab sits between Friends and About', async ({ page }) => {
|
||||
|
||||
Reference in New Issue
Block a user