Skip to content

Commit bc85321

Browse files
committed
feat: add headless wallet test
1 parent 4dc2486 commit bc85321

File tree

7 files changed

+126
-2
lines changed

7 files changed

+126
-2
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ A set of examples to help demonstrate using [DappDriver](https://github.com/asse
77
- [Cucumber](./packages/cucumber)
88
- [Jest](./packages/jest)
99
- [Mocha](./packages/mocha/)
10+
- [Headless Wallet](./packages/tests/headless.ts)
1011

1112
## Getting Started
1213

packages/page-objects/src/testDapp.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,21 @@ import { HTMLElement, PageObject } from "@assert-equals/dappdriver";
22
import { Connect } from "@assert-equals/dappdriver/wallet";
33

44
export class Dapp extends PageObject {
5-
private readonly accountsLabel: () => HTMLElement = () =>
5+
private readonly providerButtton: () => HTMLElement = (): HTMLElement =>
6+
new HTMLElement("#provider");
7+
private readonly accountsLabel: () => HTMLElement = (): HTMLElement =>
68
new HTMLElement("#accounts");
7-
private readonly connectButton: () => HTMLElement = () =>
9+
private readonly connectButton: () => HTMLElement = (): HTMLElement =>
810
new HTMLElement("#connectButton");
911

1012
constructor() {
1113
super("http://localhost:3000/", "E2E Test Dapp");
1214
}
1315

16+
async useProvider(): Promise<void> {
17+
return await this.providerButtton().click();
18+
}
19+
1420
async getAccounts(): Promise<string> {
1521
return await this.accountsLabel().getText();
1622
}

packages/tests/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
node_modules

packages/tests/README.md

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# Tests
2+
3+
Examples to help demonstrate using DappDriver to test a sample dapp
4+
5+
## Getting Started
6+
7+
Install Dependancies
8+
9+
```
10+
npm install
11+
```
12+
13+
Build Code
14+
15+
```
16+
npm run build
17+
```
18+
19+
Install Playwright Browser
20+
21+
```
22+
npx playwright install chrome
23+
```
24+
25+
Install Browser Extension
26+
27+
```
28+
npm run setup
29+
```
30+
31+
Run All Tests
32+
33+
```
34+
npm test
35+
```

packages/tests/headless.ts

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
import {
2+
CHROME,
3+
DappDriver,
4+
HEADLESS,
5+
HeadlessWalletServer,
6+
PLAYWRIGHT,
7+
} from "@assert-equals/dappdriver";
8+
import { Dapp } from "@assert-equals/dappdriver-examples-page-objects";
9+
import { expect } from "chai";
10+
import { TestDapp } from "@assert-equals/dappdriver-examples-test-dapp";
11+
import dotenv from "dotenv";
12+
dotenv.config({ path: "../../.env" });
13+
14+
(async function test(): Promise<void> {
15+
let server = new TestDapp(3000);
16+
await server.startServer();
17+
const headlessWalletPort: number = 3001;
18+
const headlessWalletServer: HeadlessWalletServer = new HeadlessWalletServer({
19+
mnemonic: process.env.DAPPDRIVER_SEED_PHRASE,
20+
port: headlessWalletPort,
21+
});
22+
await headlessWalletServer.start();
23+
let dapp: Dapp = await DappDriver.create<Dapp>(
24+
"http://localhost:3000/",
25+
PLAYWRIGHT,
26+
CHROME,
27+
Dapp,
28+
{
29+
extension: {
30+
wallet: HEADLESS,
31+
port: headlessWalletPort,
32+
},
33+
}
34+
);
35+
try {
36+
// await dapp.useProvider();
37+
const actualAccount: string = await dapp.getAccounts();
38+
const expectedAccount = "0xE18035BF8712672935FDB4e5e431b1a0183d2DFC";
39+
expect(actualAccount).to.be.equal(expectedAccount);
40+
} finally {
41+
await DappDriver.dispose();
42+
await server.shutdown();
43+
await headlessWalletServer.stop();
44+
}
45+
})();

packages/tests/package.json

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
{
2+
"name": "@assert-equals/dappdriver-examples-tests",
3+
"version": "1.0.0",
4+
"description": "Examples to help demonstrate using DappDriver to test a sample dapp",
5+
"scripts": {
6+
"clean": "rm -rf node_modules",
7+
"setup": "npx dappdriver",
8+
"test": "ts-node headless.ts"
9+
},
10+
"keywords": [
11+
"dappdriver",
12+
"headless",
13+
"playwright",
14+
"selenium",
15+
"webdriver"
16+
],
17+
"license": "MIT",
18+
"devDependencies": {
19+
"@assert-equals/dappdriver": "latest",
20+
"@assert-equals/dappdriver-examples-page-objects": "*",
21+
"@assert-equals/dappdriver-examples-test-dapp": "*",
22+
"@types/chai": "^4.3.3",
23+
"chai": "4.5.0",
24+
"dotenv": "^16.4.5",
25+
"playwright": "^1.48.2",
26+
"ts-node": "^10.9.2",
27+
"typescript": "^5.6.3"
28+
}
29+
}

packages/tests/tsconfig.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"compilerOptions": {
3+
"module": "NodeNext",
4+
"moduleResolution": "NodeNext",
5+
"target": "ESNext"
6+
}
7+
}

0 commit comments

Comments
 (0)