Skip to content

Commit 27f8dcf

Browse files
fix: replace ensjs/wallet imports with direct contract calls in primaryName fixture
Remove dependency on @ensdomains/ensjs/wallet and @ensdomains/ensjs/contracts imports which cause ESM compatibility issues with Playwright's CommonJS runtime. Replace with inline ABI definitions and direct contract calls using viem's encodeFunctionData. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent 8893942 commit 27f8dcf

File tree

1 file changed

+26
-15
lines changed

1 file changed

+26
-15
lines changed

playwright/fixtures/primaryName.ts

Lines changed: 26 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
/* eslint-disable import/no-extraneous-dependencies */
22
import { Address, encodeFunctionData, namehash, parseAbi } from 'viem'
33

4-
import { registryResolverSnippet } from '@ensdomains/ensjs/contracts'
5-
import { setPrimaryName, setResolver } from '@ensdomains/ensjs/wallet'
6-
74
import { Accounts, User } from './accounts'
85
import {
96
deploymentAddresses,
@@ -18,6 +15,17 @@ const defaultReverseRegistrarAbi = parseAbi([
1815
'function nameForAddr(address addr) external view returns (string)',
1916
])
2017

18+
// ABI for L1 ReverseRegistrar contract
19+
const reverseRegistrarAbi = parseAbi(['function setName(string name) external returns (bytes32)'])
20+
21+
// ABI for ENS Registry setResolver function
22+
const registrySetResolverAbi = parseAbi([
23+
'function setResolver(bytes32 node, address resolver) external',
24+
])
25+
26+
// ABI for ENS Registry resolver function
27+
const registryResolverAbi = parseAbi(['function resolver(bytes32 node) external view returns (address)'])
28+
2129
// ABI for resolver name() function
2230
const resolverNameSnippet = parseAbi([
2331
'function name(bytes32 node) external view returns (string)',
@@ -72,24 +80,27 @@ export async function setPrimaryNameState(
7280
if (state.l1 !== undefined) {
7381
if (state.l1 === '') {
7482
// To clear L1 primary name, set the resolver for the reverse node to zero address
75-
const functionData = setResolver.makeFunctionData(walletClient, {
76-
name: getReverseNode(address),
77-
contract: 'registry',
78-
resolverAddress: '0x0000000000000000000000000000000000000000',
79-
})
83+
const reverseNodeHash = namehash(getReverseNode(address))
8084
const tx = await walletClient.sendTransaction({
8185
account,
82-
...functionData,
86+
to: deploymentAddresses.ENSRegistry as Address,
87+
data: encodeFunctionData({
88+
abi: registrySetResolverAbi,
89+
functionName: 'setResolver',
90+
args: [reverseNodeHash, '0x0000000000000000000000000000000000000000'],
91+
}),
8392
})
8493
await waitForTransaction(tx)
8594
} else {
86-
// Set the primary name
87-
const functionData = setPrimaryName.makeFunctionData(walletClient, {
88-
name: state.l1,
89-
})
95+
// Set the primary name using the L1 ReverseRegistrar
9096
const tx = await walletClient.sendTransaction({
9197
account,
92-
...functionData,
98+
to: deploymentAddresses.ReverseRegistrar as Address,
99+
data: encodeFunctionData({
100+
abi: reverseRegistrarAbi,
101+
functionName: 'setName',
102+
args: [state.l1],
103+
}),
93104
})
94105
await waitForTransaction(tx)
95106
}
@@ -127,7 +138,7 @@ export async function getPrimaryNameState(
127138
// First, get the resolver for the reverse node from the ENS Registry
128139
const resolverAddress = await publicClient.readContract({
129140
address: deploymentAddresses.ENSRegistry as Address,
130-
abi: registryResolverSnippet,
141+
abi: registryResolverAbi,
131142
functionName: 'resolver',
132143
args: [reverseNodeHash],
133144
})

0 commit comments

Comments
 (0)