Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Initial Test Scaffolding #7

Closed
wants to merge 36 commits into from
Closed

Initial Test Scaffolding #7

wants to merge 36 commits into from

Conversation

timbrinded
Copy link

@timbrinded timbrinded commented Aug 31, 2023

What 💻

  • Added new scripts in package.json
  • Added new scripts for running and killing dev node
  • Added formatting script & CI
  • Add Yarn Workspaces support

Why ✋

  • Ensure code formatting checking for consistency
  • Improve DX by having 1-button way to start and stop nodes
  • Adding packages to our stack so we can write richer tests
  • Workspaces make working with lots of packages in a monorepo far easier
    • This will allow for root level commands without having to rely on a brittle makefile definitions. For example, each package can own its build script, whilst running yarn build will build for all packages.
    • Additionally, you can run yarn commands from any location, rather than always having relational paths to where your scripts are running. i.e. you can execute yarn dev:start from any location in repo

Evidence 📷

❯ yarn dev:start
Node is running and accepting requests! 
Node launched successfully, PID: 462981 ✅

Single command to build all packages:

❯ yarn build
➤ YN0000: Compiling contracts for zkSync Era with zksolc v1.3.13 and solc v0.8.17
➤ YN0000: Compiling 2 Solidity files
➤ YN0000: Successfully compiled 2 Solidity files
➤ YN0000: Compiling 45 Solidity files
➤ YN0000: Generating typings for: 45 artifacts in dir: typechain-types for target: ethers-v6
.....
➤ YN0000: Successfully generated 86 typings!
➤ YN0000: Successfully compiled 45 Solidity files
➤ YN0000: 
➤ YN0000: Done in 19s 226ms

Notes 📝

Note

Workspaces are such a timesaver in the long run and are relatively cheap to implement at the beginning of a repo like this. We should definitely consider either yarn or pnpm workspaces feature to manage dependencies across multiple package.json. In trying a few things for this PR I've already found it helpful being able to juggle the multiple pkg vers, like @matterlabs/hardhat-zksync-solc

Note

Ideally we want to make this an ESM project, for future proofing and access to the latest libraries - however hardhat sadly is still using ts-node. I've put a comment to suggest they switch to tsx but we may be waiting a while for that.

Important

Please disregard the stupendous amounts of commits in this PR. Work was done to try to get coverage to work with the GihubActions workers, but it seems like there's no getting around this needs to be a self-hosted only workflow, due to the process being too heavy.

@Moonsong-Labs Moonsong-Labs deleted a comment from github-actions bot Sep 4, 2023
@timbrinded timbrinded closed this Apr 1, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant