Skip to content

Commit b6db914

Browse files
VmMadmsarcevKeitoTadashi
authored
feat(dapp): add purchase name test (#899)
* feat(dapp): add purchase name test * feat: remove random number * debug: try removing function --------- Co-authored-by: msarcev <mario.sarcevic@iota.org> Co-authored-by: Keito <64607484+KeitoTadashi@users.noreply.github.com>
1 parent 89bd6be commit b6db914

File tree

2 files changed

+65
-2
lines changed

2 files changed

+65
-2
lines changed

dapp/src/components/layout/Navbar/Navbar.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,11 @@ export function Navbar() {
3232
const ROUTES = isConnected ? [...PROTECTED_ROUTES, ...PUBLIC_ROUTES] : PUBLIC_ROUTES;
3333

3434
return (
35-
<nav id="top-navbar" className="fixed top-0 left-0 w-full z-50 backdrop-blur-lg">
35+
<nav
36+
id="top-navbar"
37+
data-testid="top-navbar"
38+
className="fixed top-0 left-0 w-full z-50 backdrop-blur-lg"
39+
>
3640
<div className="px-lg py-md flex flex-col gap-y-sm">
3741
<div className="flex flex-row justify-between items-center gap-x-md">
3842
<div className="flex flex-row gap-x-lg items-center">

dapp/tests/purchase/purchase.spec.ts

Lines changed: 60 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// Copyright (c) 2025 IOTA Stiftung
22
// SPDX-License-Identifier: Apache-2.0
33

4+
import { normalizeIotaName } from '@iota/iota-names-sdk';
45
import { formatAddress } from '@iota/iota-sdk/utils';
56
import { expect } from '@playwright/test';
67

@@ -27,8 +28,66 @@ test.describe.serial('Purchase Name Tests', () => {
2728
sharedState.wallet.mnemonic = mnemonic;
2829
});
2930

31+
test('Can purchase a name', async ({ appPage: page, context }) => {
32+
const nameToPurchase = `e2e-test-name`;
33+
34+
await page.getByPlaceholder('Search for your IOTA name').filter({ visible: true }).click();
35+
36+
await page.getByPlaceholder('Check name availability').fill(nameToPurchase);
37+
const purchaseCardLocator = page.getByTestId('purchase-name-card');
38+
39+
await purchaseCardLocator.waitFor();
40+
await expect(purchaseCardLocator).toBeVisible();
41+
42+
await purchaseCardLocator.hover();
43+
await purchaseCardLocator.getByRole('button', { name: 'Buy' }).click({ timeout: 10_000 });
44+
await expect(page.getByTestId('name-purchase-title')).toContainText('@' + nameToPurchase);
45+
46+
await page.getByRole('button', { name: 'Buy' }).click({ timeout: 10_000 });
47+
(await context.waitForEvent('page')).getByRole('button', { name: 'Approve' }).click();
48+
49+
const normalizedName = normalizeIotaName(nameToPurchase + '.iota', 'at', {
50+
truncateLongParts: true,
51+
});
52+
await expect(page.getByText(`Successfully registered name ${normalizedName}`)).toBeVisible({
53+
timeout: 30_000,
54+
});
55+
56+
await page.bringToFront();
57+
});
58+
59+
test('Availability Dialog opens from all UI elements', async ({ appPage: page }) => {
60+
await page.goto('/', { waitUntil: 'domcontentloaded' });
61+
62+
await page.getByPlaceholder('Search for your IOTA name').filter({ visible: true }).click();
63+
64+
expect(page.getByRole('dialog').getByPlaceholder('Check name availability')).toBeVisible({
65+
timeout: 5_000,
66+
});
67+
68+
await page.goto('/auctions', { waitUntil: 'domcontentloaded' });
69+
70+
await page
71+
.getByTestId('top-navbar')
72+
.getByPlaceholder('Search for your IOTA name')
73+
.filter({ visible: true })
74+
.click();
75+
76+
expect(page.getByRole('dialog').getByPlaceholder('Check name availability')).toBeVisible({
77+
timeout: 5_000,
78+
});
79+
80+
await page.goto('/my-names', { waitUntil: 'domcontentloaded' });
81+
82+
await page.getByRole('button', { name: 'Name', exact: true }).click();
83+
84+
expect(page.getByRole('dialog').getByPlaceholder('Check name availability')).toBeVisible({
85+
timeout: 5_000,
86+
});
87+
});
88+
3089
test('Unavailable shows up for already purchased name', async ({ appPage: page }) => {
31-
// Name bought when initializing localnet with scripts/tests/register-name.ts
90+
// Name registered when initializing localnet with scripts/tests/register-name.ts
3291
const targetName = 'test.iota';
3392
const denormalizedName = denormalizeName(targetName);
3493

0 commit comments

Comments
 (0)