Test Gru Quick Start

Test gru is still in testing phase. If you have any question, please connect to us: connect@gru.ai,or join our discord.

Currently, Test Gru only supports Node.js/TypeStript. We are gradually adding support for other languages. We have prepared an open-source project as an example to help you quickly start.

Creat Test Gru Account

Log in at Gru.ai. Test Gru currently only supports use with GitHub accounts. You need a GitHub account to log in to gru.ai. image image

Enter Test Gru

Click the top left corner to select Test Gru. iamge

Install Github Application

Follow the steps to install Test Gru. image iamge

Then select a repo, perform the configuration. image image

grutest.yaml

Configuration file example

version: "0.1"
global:
  setup:
    - npm install
pipeline:
  runTest:
    # If your project uses ESLint and Prettier, you can configure the pre-stage here.
    # pre:
    #    - npx eslint --fix {{sourceFilePath}} 
    #    - npx prettier {{sourceFilePath}} --write
    exec:
       - npx vitest run {{testFilePath}}
    # If your project has certain requirements for the final submitted code, you can configure the post-stage here.
    # post:
    #   - npm run lint
    #   - npx tsc --noEmit
settings:
  # IF you allow TestGru to add export to your source code classes or functions when it needs to test your source code
  exportFunctionOrClass: allow
  # Location of the source code project
  include:
      - src
  # Location of the test files
  testPlacementStrategies:
    - type: co-located
      testFilePattern: "{{sourceFileName}}.spec.ts"

explanation

Name Type Required Example Value or Default Value Description
version string No 0.1 Version infomation
global object Required - Global confignation
global.setup array Required - Configuration Actions
global.cleanup array No - Cleanup Actions
pipeline PipelineConfig Required - Pipeline Configuration
pipeline.runTest object Required - Run Test Configuration
pipeline.runTest.exec array Required - Execute Command
pipeline.runTest.pre array No - Preprocessing Command
pipeline.runTest.post array No - Post-processing Command
pipeline.updateSource object No - Update Source Configuration
pipeline.updateSource.post array Required - Update Preprocessing Command
settings SettingsConfig No - Set Configuration
settings.exportFunctionOrClass string (allow not-allow) "allow" - Set Configuration
settings.include array No src Inclusions
settings.mockIgnore array No ["lodash", "ajv"] Mock Exclusions
settings.testPlacementStrategies array No The next chapter mainly introduces Test Placement Strategy

About testPlacementStrategies

There are two main ways to organize test code.

centralized

If your project structure is as follows:

.
├── package.json
├── src
│   └── sum.ts
└── test
    └── sum.test.ts

then you can configure testPlacementStrategies like this

testPlacementStrategies:
  -  type: centralized
     testDir: test
     testFilePattern: ".test.ts"

co-located

If your project structure is as follows:

.
├── package.json
└── src
    ├── sum.test.ts
    └── sum.ts

then you can configure testPlacementStrategies like this

  testPlacementStrategies:
    - type: co-located
      testFilePattern: ".test.ts"

Trigger TestGru to work

Auto Trigger by Pull Request

When you complete the configuration, Test Gru will automatically take over your repository. Whenever you submit a PR, Test Gru will automatically detect software that requires unit tests and add tests for it.

image

After Gru completes writing the test code, it will run the tests. Once it confirms there are no issues with the test code, it will submit a PR with the unit test code to the current PR.

image

Manual Trigger

You can manually trigger Test Gru on the Gru.ai. image

It can be triggered by PR or existing code files. image image

Quick Start with Example Repository

  1. Fork github.com/gru-agent/testgru-example
  2. Install App and get configuration from code repo image
  3. dispatch src/user.ts image
  4. Test Gru submits a PR image