diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b8c0f6647fd..f1a886f472c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -28,179 +28,178 @@ jobs: - run: yarn build:cjs - uses: actions/cache/save@v4 with: - path: ./ - key: web3-${{ matrix.node }}-${{github.sha}} + path: ./ + key: web3-${{ matrix.node }}-${{github.sha}} - build-esm: - name: Build ESM - needs: build - runs-on: ubuntu-latest - steps: - - uses: actions/setup-node@v4 - with: - node-version: 18 - - uses: actions/cache/restore@v4 - with: - path: ./ - key: web3-18-${{github.sha}} - - run: yarn build:esm - build-types: - name: Build Types - needs: build - runs-on: ubuntu-latest - steps: - - uses: actions/setup-node@v4 - with: - node-version: 18 - - uses: actions/cache/restore@v4 - with: - path: ./ - key: web3-18-${{github.sha}} - - run: yarn build:types - lint: - name: Lint - needs: build - runs-on: ubuntu-latest - steps: - - uses: actions/setup-node@v4 - with: - node-version: 18 - - uses: actions/cache/restore@v4 - with: - path: ./ - key: web3-18-${{github.sha}} - - run: npx ts-node scripts/init.ts - - name: Restore eslint caches - uses: actions/cache/restore@v4 - with: - path: | - packages/web3/.eslintcache - packages/web3-core/.eslintcache - packages/web3-eth/.eslintcache - packages/web3-eth-abi/.eslintcache - packages/web3-eth-accounts/.eslintcache - packages/web3-eth-contract/.eslintcache - packages/web3-eth-ens/.eslintcache - packages/web3-eth-iban/.eslintcache - packages/web3-eth-personal/.eslintcache - packages/web3-net/.eslintcache - packages/web3-providers-http/.eslintcache - packages/web3-providers-ws/.eslintcache - packages/web3-rpc-methods/.eslintcache - packages/web3-types/.eslintcache - packages/web3-utils/.eslintcache - packages/web3-validator/.eslintcache - tools/web3-plugin-example/.eslintcache - key: ${{ runner.os }}-eslintcache + # build-esm: + # name: Build ESM + # needs: build + # runs-on: ubuntu-latest + # steps: + # - uses: actions/setup-node@v4 + # with: + # node-version: 18 + # - uses: actions/cache/restore@v4 + # with: + # path: ./ + # key: web3-18-${{github.sha}} + # - run: yarn build:esm + # build-types: + # name: Build Types + # needs: build + # runs-on: ubuntu-latest + # steps: + # - uses: actions/setup-node@v4 + # with: + # node-version: 18 + # - uses: actions/cache/restore@v4 + # with: + # path: ./ + # key: web3-18-${{github.sha}} + # - run: yarn build:types + # lint: + # name: Lint + # needs: build + # runs-on: ubuntu-latest + # steps: + # - uses: actions/setup-node@v4 + # with: + # node-version: 18 + # - uses: actions/cache/restore@v4 + # with: + # path: ./ + # key: web3-18-${{github.sha}} + # - run: npx ts-node scripts/init.ts + # - name: Restore eslint caches + # uses: actions/cache/restore@v4 + # with: + # path: | + # packages/web3/.eslintcache + # packages/web3-core/.eslintcache + # packages/web3-eth/.eslintcache + # packages/web3-eth-abi/.eslintcache + # packages/web3-eth-accounts/.eslintcache + # packages/web3-eth-contract/.eslintcache + # packages/web3-eth-ens/.eslintcache + # packages/web3-eth-iban/.eslintcache + # packages/web3-eth-personal/.eslintcache + # packages/web3-net/.eslintcache + # packages/web3-providers-http/.eslintcache + # packages/web3-providers-ws/.eslintcache + # packages/web3-rpc-methods/.eslintcache + # packages/web3-types/.eslintcache + # packages/web3-utils/.eslintcache + # packages/web3-validator/.eslintcache + # tools/web3-plugin-example/.eslintcache + # key: ${{ runner.os }}-eslintcache - - run: yarn lint - - run: gh cache delete "${{ runner.os }}-eslintcache" - if: github.event_name == 'push' && github.ref == 'refs/heads/4.x' - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # - run: yarn lint + # - run: gh cache delete "${{ runner.os }}-eslintcache" + # if: github.event_name == 'push' && github.ref == 'refs/heads/4.x' + # env: + # GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - name: Save eslint caches - if: github.event_name == 'push' && github.ref == 'refs/heads/4.x' - uses: actions/cache/save@v4 - with: - path: | - packages/web3/.eslintcache - packages/web3-core/.eslintcache - packages/web3-eth/.eslintcache - packages/web3-eth-abi/.eslintcache - packages/web3-eth-accounts/.eslintcache - packages/web3-eth-contract/.eslintcache - packages/web3-eth-ens/.eslintcache - packages/web3-eth-iban/.eslintcache - packages/web3-eth-personal/.eslintcache - packages/web3-net/.eslintcache - packages/web3-providers-http/.eslintcache - packages/web3-providers-ws/.eslintcache - packages/web3-rpc-methods/.eslintcache - packages/web3-types/.eslintcache - packages/web3-utils/.eslintcache - packages/web3-validator/.eslintcache - tools/web3-plugin-example/.eslintcache - key: ${{ runner.os }}-eslintcache + # - name: Save eslint caches + # if: github.event_name == 'push' && github.ref == 'refs/heads/4.x' + # uses: actions/cache/save@v4 + # with: + # path: | + # packages/web3/.eslintcache + # packages/web3-core/.eslintcache + # packages/web3-eth/.eslintcache + # packages/web3-eth-abi/.eslintcache + # packages/web3-eth-accounts/.eslintcache + # packages/web3-eth-contract/.eslintcache + # packages/web3-eth-ens/.eslintcache + # packages/web3-eth-iban/.eslintcache + # packages/web3-eth-personal/.eslintcache + # packages/web3-net/.eslintcache + # packages/web3-providers-http/.eslintcache + # packages/web3-providers-ws/.eslintcache + # packages/web3-rpc-methods/.eslintcache + # packages/web3-types/.eslintcache + # packages/web3-utils/.eslintcache + # packages/web3-validator/.eslintcache + # tools/web3-plugin-example/.eslintcache + # key: ${{ runner.os }}-eslintcache - build-web: - name: Build Web - needs: build - runs-on: ubuntu-latest - steps: - - uses: actions/setup-node@v4 - with: - node-version: 18 - - uses: actions/cache/restore@v4 - with: - path: ./ - key: web3-18-${{github.sha}} - - name: Restore default branch stats - if: github.event_name != 'push' - uses: actions/cache/restore@v4 - with: - path: packages/web3/dist/4.x.json - key: web3-bundle-stats-4x-${{github.event.pull_request.base.sha}} - - run: yarn build:web:analyze - env: - STATS_FILE: ${{ github.ref_name }}.json - - name: Compare bundle stats - uses: github/webpack-bundlesize-compare-action@v1.8.2 - continue-on-error: true - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - current-stats-json-path: "packages/web3/dist/${{ github.ref_name }}.json" - base-stats-json-path: "packages/web3/dist/4.x.json" - - name: Cache default branch stats - uses: actions/cache/save@v4 - if: github.event_name == 'push' && github.ref == 'refs/heads/4.x' - with: - path: packages/web3/dist/${{ github.ref_name }}.json - key: web3-bundle-stats-4x-${{github.sha}} + # build-web: + # name: Build Web + # needs: build + # runs-on: ubuntu-latest + # steps: + # - uses: actions/setup-node@v4 + # with: + # node-version: 18 + # - uses: actions/cache/restore@v4 + # with: + # path: ./ + # key: web3-18-${{github.sha}} + # - name: Restore default branch stats + # if: github.event_name != 'push' + # uses: actions/cache/restore@v4 + # with: + # path: packages/web3/dist/4.x.json + # key: web3-bundle-stats-4x-${{github.event.pull_request.base.sha}} + # - run: yarn build:web:analyze + # env: + # STATS_FILE: ${{ github.ref_name }}.json + # - name: Compare bundle stats + # uses: github/webpack-bundlesize-compare-action@v1.8.2 + # continue-on-error: true + # with: + # github-token: ${{ secrets.GITHUB_TOKEN }} + # current-stats-json-path: "packages/web3/dist/${{ github.ref_name }}.json" + # base-stats-json-path: "packages/web3/dist/4.x.json" + # - name: Cache default branch stats + # uses: actions/cache/save@v4 + # if: github.event_name == 'push' && github.ref == 'refs/heads/4.x' + # with: + # path: packages/web3/dist/${{ github.ref_name }}.json + # key: web3-bundle-stats-4x-${{github.sha}} + # unit: + # name: Unit Tests + # needs: build + # runs-on: ubuntu-latest + # strategy: + # matrix: + # node: ['18', '20.17.0'] + # steps: + # - uses: actions/setup-node@v4 + # with: + # architecture: x64 + # node-version: ${{ matrix.node }} + # - uses: actions/cache/restore@v4 + # with: + # path: ./ + # key: web3-${{ matrix.node }}-${{github.sha}} + # - run: yarn test:unit + # continue-on-error: ${{ matrix.node == '20.17.0' }} + # - name: Upload coverage to Codecov + # uses: codecov/codecov-action@v3 + # with: + # flags: UnitTests + # token: ${{ secrets.CODECOV_TOKEN }} + # if: ${{ matrix.node == 18 }} - unit: - name: Unit Tests - needs: build - runs-on: ubuntu-latest - strategy: - matrix: - node: ['18', '20.17.0'] - steps: - - uses: actions/setup-node@v4 - with: - architecture: x64 - node-version: ${{ matrix.node }} - - uses: actions/cache/restore@v4 - with: - path: ./ - key: web3-${{ matrix.node }}-${{github.sha}} - - run: yarn test:unit - continue-on-error: ${{ matrix.node == '20.17.0' }} - - name: Upload coverage to Codecov - uses: codecov/codecov-action@v3 - with: - flags: UnitTests - token: ${{ secrets.CODECOV_TOKEN }} - if: ${{ matrix.node == 18 }} - - integration-hardhat: - name: Integration hardhat - needs: build - runs-on: ubuntu-latest - strategy: - fail-fast: false - steps: - - uses: actions/setup-node@v3 - with: - node-version: 18 - - uses: actions/cache/restore@v4 - with: - path: ./ - key: web3-18-${{github.sha}} - - run: npx hardhat node & - - run: yarn test:e2e:hardhat:http - shell: bash + # integration-hardhat: + # name: Integration hardhat + # needs: build + # runs-on: ubuntu-latest + # strategy: + # fail-fast: false + # steps: + # - uses: actions/setup-node@v3 + # with: + # node-version: 18 + # - uses: actions/cache/restore@v4 + # with: + # path: ./ + # key: web3-18-${{github.sha}} + # - run: npx hardhat node & + # - run: yarn test:e2e:hardhat:http + # shell: bash e2e-geth: name: Integration # (geth with HTTP, IPC & WS) @@ -212,132 +211,132 @@ jobs: strategy: fail-fast: false matrix: - mode: [ 'ipc', 'ws', 'http' ] + mode: ['ipc', 'ws', 'http'] steps: - - uses: actions/setup-node@v4 - with: - node-version: 18 - - uses: actions/cache/restore@v4 - with: - path: ./ - key: web3-18-${{github.sha}} - - run: yarn test:e2e:geth:${{ matrix.mode }} - shell: bash + - uses: actions/setup-node@v4 + with: + node-version: 18 + - uses: actions/cache/restore@v4 + with: + path: ./ + key: web3-18-${{github.sha}} + - run: yarn test:e2e:geth:${{ matrix.mode }} + shell: bash - e2e-browsers: - name: End-to-End hardhat:ws - needs: build - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - browser: ['electron', 'chrome', 'firefox'] - steps: - - uses: actions/setup-node@v3 - with: - node-version: 18 - - uses: browser-actions/setup-firefox@latest - if: matrix.browser == 'firefox' - - uses: actions/cache/restore@v4 - with: - path: ./ - key: web3-18-${{github.sha}} - - run: npx hardhat node & - - run: npm install --no-package-lock --no-save --force cypress - - name: Cypress run - uses: cypress-io/github-action@v4 - with: - install: false - command: yarn test:e2e:hardhat:ws:${{ matrix.browser }} - cache-key: node-v18-on-${{ matrix.browser }}-hash-${{ hashFiles('yarn.lock') }} + # e2e-browsers: + # name: End-to-End hardhat:ws + # needs: build + # runs-on: ubuntu-latest + # strategy: + # fail-fast: false + # matrix: + # browser: ['electron', 'chrome', 'firefox'] + # steps: + # - uses: actions/setup-node@v3 + # with: + # node-version: 18 + # - uses: browser-actions/setup-firefox@latest + # if: matrix.browser == 'firefox' + # - uses: actions/cache/restore@v4 + # with: + # path: ./ + # key: web3-18-${{github.sha}} + # - run: npx hardhat node & + # - run: npm install --no-package-lock --no-save --force cypress + # - name: Cypress run + # uses: cypress-io/github-action@v4 + # with: + # install: false + # command: yarn test:e2e:hardhat:ws:${{ matrix.browser }} + # cache-key: node-v18-on-${{ matrix.browser }}-hash-${{ hashFiles('yarn.lock') }} - deploy-docs: - name: Docs CloudFlare Deploy - needs: build - runs-on: ubuntu-latest - permissions: - contents: read - deployments: write - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - cache: yarn - node-version: '18' - - uses: actions/cache/restore@v4 - with: - path: ./ - key: web3-18-${{github.sha}} - - run: yarn install --ignore-scripts - - run: yarn build:cjs - - run: yarn run build:docs - - name: Publish to Cloudflare Pages - uses: cloudflare/pages-action@v1 - with: - apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} - accountId: 2238a825c5aca59233eab1f221f7aefb - projectName: web3-js-docs - directory: ./docs/build - gitHubToken: ${{ secrets.GITHUB_TOKEN }} - benchmark: - name: Benchmark Tests - needs: build - runs-on: ubuntu-latest - steps: - - uses: actions/setup-node@v4 - with: - node-version: 18 - - uses: actions/cache/restore@v4 - with: - path: ./ - key: web3-18-${{github.sha}} - # @octokit/core not supported on node 16, so I can't add it to the package.json - - run: npm install --no-package-lock --no-save --force @octokit/core@5.1.0 - - name: Restore main branch benchmark data - uses: actions/cache/restore@v4 - with: - path: web3-benchmark-main.json - key: ${{ runner.os }}-web3-benchmark-main.json - - run: yarn test:benchmark - - name: Compare benchmark result and make comment - uses: benchmark-action/github-action-benchmark@v1 - with: - # What benchmark tool the output.txt came from - tool: 'benchmarkjs' - # Where the output from the benchmark tool is stored - output-file-path: benchmark-data.txt - # Where the previous data file is stored - external-data-json-path: web3-benchmark-main.json - # Workflow will fail when an alert happens - fail-on-alert: false - # GitHub API token to make a commit comment - github-token: ${{ secrets.GITHUB_TOKEN }} - # Enable alert commit comment - comment-always: true - save-data-file: false - # copy comment from commit to Pull Request - - run: node scripts/copyCommitCommentToPrComment.js ${{ secrets.GITHUB_TOKEN }} ${{github.event.pull_request.head.sha}} ${{github.event.number}} - - name: Compare benchmark result and fail if threshold is reached - uses: benchmark-action/github-action-benchmark@v1 - with: - # What benchmark tool the output.txt came from - tool: 'benchmarkjs' - # Where the output from the benchmark tool is stored - output-file-path: benchmark-data.txt - # Where the previous data file is stored - external-data-json-path: web3-benchmark-main.json - # Workflow will fail when an alert happens - fail-on-alert: true - # Enable alert commit comment - alert-threshold: '200%' - comment-always: false - - run: gh cache delete "${{ runner.os }}-web3-benchmark-main.json" - if: github.event_name == 'push' && github.ref == 'refs/heads/4.x' - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - name: Save main branch benchmark data - uses: actions/cache/save@v4 - if: github.event_name == 'push' && github.ref == 'refs/heads/4.x' - with: - path: web3-benchmark-main.json - key: ${{ runner.os }}-web3-benchmark-main.json + # deploy-docs: + # name: Docs CloudFlare Deploy + # needs: build + # runs-on: ubuntu-latest + # permissions: + # contents: read + # deployments: write + # steps: + # - uses: actions/checkout@v4 + # - uses: actions/setup-node@v4 + # with: + # cache: yarn + # node-version: '18' + # - uses: actions/cache/restore@v4 + # with: + # path: ./ + # key: web3-18-${{github.sha}} + # - run: yarn install --ignore-scripts + # - run: yarn build:cjs + # - run: yarn run build:docs + # - name: Publish to Cloudflare Pages + # uses: cloudflare/pages-action@v1 + # with: + # apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} + # accountId: 2238a825c5aca59233eab1f221f7aefb + # projectName: web3-js-docs + # directory: ./docs/build + # gitHubToken: ${{ secrets.GITHUB_TOKEN }} + # benchmark: + # name: Benchmark Tests + # needs: build + # runs-on: ubuntu-latest + # steps: + # - uses: actions/setup-node@v4 + # with: + # node-version: 18 + # - uses: actions/cache/restore@v4 + # with: + # path: ./ + # key: web3-18-${{github.sha}} + # # @octokit/core not supported on node 16, so I can't add it to the package.json + # - run: npm install --no-package-lock --no-save --force @octokit/core@5.1.0 + # - name: Restore main branch benchmark data + # uses: actions/cache/restore@v4 + # with: + # path: web3-benchmark-main.json + # key: ${{ runner.os }}-web3-benchmark-main.json + # - run: yarn test:benchmark + # - name: Compare benchmark result and make comment + # uses: benchmark-action/github-action-benchmark@v1 + # with: + # # What benchmark tool the output.txt came from + # tool: 'benchmarkjs' + # # Where the output from the benchmark tool is stored + # output-file-path: benchmark-data.txt + # # Where the previous data file is stored + # external-data-json-path: web3-benchmark-main.json + # # Workflow will fail when an alert happens + # fail-on-alert: false + # # GitHub API token to make a commit comment + # github-token: ${{ secrets.GITHUB_TOKEN }} + # # Enable alert commit comment + # comment-always: true + # save-data-file: false + # # copy comment from commit to Pull Request + # - run: node scripts/copyCommitCommentToPrComment.js ${{ secrets.GITHUB_TOKEN }} ${{github.event.pull_request.head.sha}} ${{github.event.number}} + # - name: Compare benchmark result and fail if threshold is reached + # uses: benchmark-action/github-action-benchmark@v1 + # with: + # # What benchmark tool the output.txt came from + # tool: 'benchmarkjs' + # # Where the output from the benchmark tool is stored + # output-file-path: benchmark-data.txt + # # Where the previous data file is stored + # external-data-json-path: web3-benchmark-main.json + # # Workflow will fail when an alert happens + # fail-on-alert: true + # # Enable alert commit comment + # alert-threshold: '200%' + # comment-always: false + # - run: gh cache delete "${{ runner.os }}-web3-benchmark-main.json" + # if: github.event_name == 'push' && github.ref == 'refs/heads/4.x' + # env: + # GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # - name: Save main branch benchmark data + # uses: actions/cache/save@v4 + # if: github.event_name == 'push' && github.ref == 'refs/heads/4.x' + # with: + # path: web3-benchmark-main.json + # key: ${{ runner.os }}-web3-benchmark-main.json diff --git a/packages/web3-eth-contract/package.json b/packages/web3-eth-contract/package.json index 20b368174c8..0cd539d966b 100644 --- a/packages/web3-eth-contract/package.json +++ b/packages/web3-eth-contract/package.json @@ -39,7 +39,7 @@ "test:ci": "jest --coverage=true --coverage-reporters=json --verbose", "test:watch": "npm test -- --watch", "test:unit": "jest --config=./test/unit/jest.config.js", - "test:integration": "jest --config=./test/integration/jest.config.js --runInBand", + "test:integration": "jest --config=./test/integration/jest.config.js --runInBand --detectOpenHandles", "test:e2e:electron": "npx cypress run --headless --browser electron --env grep='ignore',invert=true", "test:e2e:chrome": "npx cypress run --headless --browser chrome --env grep='ignore',invert=true", "test:e2e:firefox": "npx cypress run --headless --browser firefox --env grep='ignore',invert=true" diff --git a/packages/web3-eth-contract/test/integration/contract_events.test.ts b/packages/web3-eth-contract/test/integration/contract_events.test.ts index 49211fb08d7..339777cb072 100644 --- a/packages/web3-eth-contract/test/integration/contract_events.test.ts +++ b/packages/web3-eth-contract/test/integration/contract_events.test.ts @@ -46,7 +46,7 @@ describe('contract', () => { arguments: [10, 'string init value'], }; - sendOptions = { from: acc.address, gas: '1000000' }; + sendOptions = { from: acc.address }; }); afterAll(async () => { diff --git a/packages/web3-eth-contract/test/integration/local_account/contract_erc721.test.ts b/packages/web3-eth-contract/test/integration/local_account/contract_erc721.test.ts index ac42fad268f..81f112fa23a 100644 --- a/packages/web3-eth-contract/test/integration/local_account/contract_erc721.test.ts +++ b/packages/web3-eth-contract/test/integration/local_account/contract_erc721.test.ts @@ -174,9 +174,14 @@ describe('contract', () => { it.each(['0x1', '0x2'])('should approve and then transferFrom item %p', async type => { const tempAccount = await createLocalAccount(web3); const toAccount = await createLocalAccount(web3); + const localSendOptions = { + from: localAccount.address, + gas: '100000', + }; + const awardReceipt = await contractDeployed.methods .awardItem(tempAccount.address, 'http://my-nft-award') - .send({ ...sendOptions, type }); + .send({ ...localSendOptions, type }); expect(awardReceipt.events).toBeDefined(); expect(awardReceipt.events?.Transfer).toBeDefined(); expect(awardReceipt.events?.Transfer.event).toBe('Transfer'); @@ -198,7 +203,7 @@ describe('contract', () => { const approveReceipt = await contractDeployed.methods .approve(toAccount.address, tokenId) .send({ - ...sendOptions, + ...localSendOptions, type, from: tempAccount.address, }); @@ -226,7 +231,7 @@ describe('contract', () => { const safeTransferFromReceipt = await contractDeployed.methods .safeTransferFrom(tempAccount.address, toAccount.address, tokenId) .send({ - ...sendOptions, + ...localSendOptions, type, from: toAccount.address, });