dfinity / agent-js

A collection of libraries and tools for building software around the Internet Computer, in JavaScript.
https://agent-js.icp.xyz
Apache License 2.0
151 stars 94 forks source link

agent-js

Use an Agent to interact with the Internet Computer from your JavaScript program.

This source code repository contains multiple npm packages, each under ./packages/.

Development

Getting Started

  1. Clone the git repository.
  2. Run npm i -g npm
  3. Run npm install

After that, you probably want to dive into a specific package in ./packages.

Running Tests

Running tests is a good way to get a sense of what the features will do. We try to have full unit test coverage for all new features, although sometimes mocking network conditions can be difficult, and e2e tests may be preferable.

Unit Tests

To run the unit tests for all packages, run npm test. You can run tests for a specific package by running npm test in the package directory or by running npm test --workspace=<package-name> in the root directory.

E2E Tests

There are two sets of e2e tests in this repository. They are located in e2e/browser and e2e/node. The browser tests are run in a headless browser, and the node tests are run in a node environment. The node tests are faster and require less setup, but the browser tests can simulate relevant environmental conditions.

Important Note: the e2e tests do not run from the TypeScript source code of projects and must be compiled. You should run npm run build to compile the projects after your changes before running the tests.

To run the e2e node tests, you can run

dfx start --background --clean
npm run e2e --workspace e2e/node
dfx stop

We expect you to have the replica running on port 4943. If you are using a different port, you can set an environment variable REPLICA_PORT to the port number.

Note: browser tests have been temporarily removed pending a rewrite

To run the e2e browser tests, you can run

dfx start --background --clean
npm run setup --workspace e2e/browser
npm run e2e --workspace e2e/browser
dfx stop

Workspaces

We use npm to manage this repo and its packages. A few useful commands to keep in mind;

bin/* scripts

The following scripts can be found in ./bin:

Monorepo-related scripts run in this order, but are usually invoked by npm install:

Contributing

Contributions are welcome! Please refer to the CONTRIBUTING.md, where you can find more details about:

License

This project is licensed under the Apache-2.0 License.