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

Use Floss and Chai to Replace Jest #778

Merged
merged 39 commits into from
May 6, 2022
Merged

Conversation

gz65555
Copy link
Collaborator

@gz65555 gz65555 commented May 5, 2022

Advantages

  • Much more easier to write your unit test
  • Much more easier to debug your unit test

Packages Added

  • Floss is a unit-testing tool made by pixi team which help us run our test in electron.

  • Chai is an assertion library for [node](http://nodejs.org/) and the browser.

  • Use nyc to collect coverage.

How to Write Unit Test

  1. Add unit test in tests packages
  2. Add unit test dependencies in package.json in tests
  3. Use npx lerna boostrap update dependencies.

A Demo for unit test:

import { expect } from "chai";
import { WebGLEngine, WebCanvas } from "@oasis-engine/rhi-webgl";

describe("webgl engine test", () => {
  it("create a webgl engine", () => {
    const canvas = document.createElement("canvas");
    const engine = new WebGLEngine(canvas);
    expect(engine).not.be.null;
  });
});

Chai is quite different with Jest. We need migrate it.

How to Test

Test

npm run test

image-20220430183134839

Test Coverage

npm run test-cov

And the coverage page is:

image-20220430183443304

Test Debug

If you want to debug your coverage, you should run:

npm run test-debug

Test tool will open electron app and debug tool:

image-20220430183706093

Error Handling

Run test

image-20220506002944946

You can use debugger in npm run test-debug

image-20220506003144352

gz65555 and others added 30 commits September 26, 2021 16:32
@GuoLei1990 GuoLei1990 changed the base branch from main to dev/0.8 May 6, 2022 02:51
@codecov-commenter
Copy link

Codecov Report

Merging #778 (9534e8f) into dev/0.8 (4e82285) will decrease coverage by 33.37%.
The diff coverage is 0.00%.

❗ Current head 9534e8f differs from pull request most recent head ce7dee2. Consider uploading reports for the commit ce7dee2 to get more accurate results

@@             Coverage Diff              @@
##           dev/0.8     #778       +/-   ##
============================================
- Coverage    43.69%   10.31%   -33.38%     
============================================
  Files          419      242      -177     
  Lines        22847    11430    -11417     
  Branches      3129     1709     -1420     
============================================
- Hits          9982     1179     -8803     
+ Misses       12865    10047     -2818     
- Partials         0      204      +204     
Impacted Files Coverage Δ
packages/rhi-webgl/src/GLTexture.ts 21.95% <0.00%> (-28.66%) ⬇️
packages/math/src/SphericalHarmonics3.ts 1.21% <0.00%> (-98.79%) ⬇️
packages/core/src/material/BlinnPhongMaterial.ts 1.81% <0.00%> (-98.19%) ⬇️
packages/core/src/material/UnlitMaterial.ts 4.16% <0.00%> (-95.84%) ⬇️
packages/math/src/BoundingBox.ts 1.40% <0.00%> (-95.19%) ⬇️
packages/core/src/material/PBRSpecularMaterial.ts 5.26% <0.00%> (-94.74%) ⬇️
packages/math/src/Plane.ts 5.40% <0.00%> (-94.60%) ⬇️
packages/core/src/asset/AssetPromise.ts 4.25% <0.00%> (-94.19%) ⬇️
packages/core/src/material/PBRMaterial.ts 5.88% <0.00%> (-94.12%) ⬇️
packages/math/src/BoundingSphere.ts 3.70% <0.00%> (-93.60%) ⬇️
... and 410 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 4e82285...ce7dee2. Read the comment docs.

@GuoLei1990 GuoLei1990 added the test unit test label May 6, 2022
Copy link
Member

@GuoLei1990 GuoLei1990 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1

@GuoLei1990 GuoLei1990 merged commit d0e639c into galacean:dev/0.8 May 6, 2022
@GuoLei1990 GuoLei1990 mentioned this pull request May 11, 2022
18 tasks
gz65555 added a commit that referenced this pull request Jun 29, 2022
* fix: use string replace asset type to extend easily

* fix: onEndRender trigger error

* fix: remove ms blob deprecated

* build: update typescript version

* feat: update background mesh

* refactor: add gc ignore

* build: physics use oasis-engine dependency

* bump version

* bump version

* feat: add register and reflection object

* feat: add prefab parser

* fix: resourceManager has't destory all cache

* fix: cache promise is not clear

* bump version

* feat: export prefabloader

* fix: dynamic explansion

* feat: add mipmap generate warn

* feat: add mipmap true

* feat: add pixel buffer

* feat: update engine version

* feat: add type watch

* feat: init all project

* build: remove init oasis

* refactor: use modelmesh encode buffer

* Test: Use Floss and Chai to Replace Jest (#778)

test: Use Floss and Chai to Replace Jest

* refactor: remove console

* refactor: add math serialize

* refactor: add model mesh serialize

* refactor: add scene loader

* refactor: delete schema parser

* refactor: add scene loader

* refactor: add index

* refactor: remove toolkit features (#780)

* v0.7.0-beta.4 (#795)

* refactor: fix types error

* Fix:local translate (#706)

* fix(transform):local translate

* Add component denpendent decorator (#796)

* feat: add `dependentComponents` decorator

* ci: remove ci on node 12 (#801)

* Update README.md

* Fix Test Version Error (#802)

* ci: remove ci on node 12

* test: fix version

* feat: add `priority` for renderer to order(#803)

* feat(renderer): add `priority` for renderer to order

* refactor: remove useless import

* Fix SkyBox render mirror problem (#816)

* refactor: fix skybox mirror problem

* fix:   change `region` and `pivot` origin to left-bottom (#809)

* fix:   change `region` and `pivot` origin to left-bottom

* Merge latest main (#820)

* v0.7.0-beta.4

* Update README.md

* Update README.md

* Update README.md

* Add component denpendent decorator (#796) (#807)

* feat: add `dependentComponents` decorator

* fix(Renderer): destroy crash when material is null (#808)

* Improve BlendShape when use attribute mode (#804)

* feat: improve BlendShape when use attribute mode

* v0.7.0-beta.5

* refactor: fix skybox mirror problem

* fix: fixed the bug of animator revert when blendWeight length exceeds 4 (#817)

* fix: fixed the bug of animator revert when blendWeight length exceeds 4

* v0.7.0-beta.6

* refactor: fix shader

* fix(text): fix horizontal and vertical alignment error (#772)

* fix(text): fix horizontal alignment error

Co-authored-by: luzhuang <[email protected]>
Co-authored-by: singlecoder <[email protected]>

* feat: export animation type

* refactor: bump version

* refactor: rename (#827)

* v0.7.0-beta.7

* feat: physics character controller (#818)

* feat: add `CharacterController` for physX backend

* optimization camera code (#830)

refactor: optimization camera code

* Refactor `cloneTo` to `copyFrom` for math library and rename `setValue` to `set` (#844)

* feat: refactor `cloneTo` to `copyFrom` for math library
* feat: rename `setValue` to `set` for math library

* feat: add to Obejct

* feat: remove swc core

* refactor: change toJSON to toObject

* refactor: merge dev/0.8

* refactor: remove console

Co-authored-by: gz65555 <[email protected]>
Co-authored-by: ChenMo <[email protected]>
Co-authored-by: AZhan <[email protected]>
Co-authored-by: singlecoder <[email protected]>
Co-authored-by: luzhuang <[email protected]>
Co-authored-by: zhuxudong <[email protected]>
Co-authored-by: yangfengzzz <[email protected]>
@GuoLei1990 GuoLei1990 changed the title Test: Use Floss and Chai to Replace Jest Use Floss and Chai to Replace Jest Jun 29, 2022
gz65555 added a commit that referenced this pull request Jul 11, 2022
* Test: Use Floss and Chai to Replace Jest (#778)

test: Use Floss and Chai to Replace Jest

* refactor: remove toolkit features (#780)

* v0.7.0-beta.4 (#795)

* Fix:local translate (#706)

* fix(transform):local translate

* Add component denpendent decorator (#796)

* feat: add `dependentComponents` decorator

* ci: remove ci on node 12 (#801)

* Update README.md

* Fix Test Version Error (#802)

* ci: remove ci on node 12

* test: fix version

* feat: add `priority` for renderer to order(#803)

* feat(renderer): add `priority` for renderer to order

* Fix SkyBox render mirror problem (#816)

* refactor: fix skybox mirror problem

* fix:   change `region` and `pivot` origin to left-bottom (#809)

* fix:   change `region` and `pivot` origin to left-bottom

* Merge latest main (#820)

* v0.7.0-beta.4

* Update README.md

* Update README.md

* Update README.md

* Add component denpendent decorator (#796) (#807)

* feat: add `dependentComponents` decorator

* fix(Renderer): destroy crash when material is null (#808)

* Improve BlendShape when use attribute mode (#804)

* feat: improve BlendShape when use attribute mode

* v0.7.0-beta.5

* refactor: fix skybox mirror problem

* fix: fixed the bug of animator revert when blendWeight length exceeds 4 (#817)

* fix: fixed the bug of animator revert when blendWeight length exceeds 4

* v0.7.0-beta.6

* refactor: fix shader

* fix(text): fix horizontal and vertical alignment error (#772)

* fix(text): fix horizontal alignment error

Co-authored-by: luzhuang <[email protected]>
Co-authored-by: singlecoder <[email protected]>

* refactor: rename (#827)

* v0.7.0-beta.7

* feat: physics character controller (#818)

* feat: add `CharacterController` for physX backend

* optimization camera code (#830)

refactor: optimization camera code

* Refactor `cloneTo` to `copyFrom` for math library and rename `setValue` to `set` (#844)

* feat: refactor `cloneTo` to `copyFrom` for math library
* feat: rename `setValue` to `set` for math library

* Fix transform`translate` and `rotate` space bug (#847)

* fix: transform`translate` and `rotate` space bug
* refactor: opt comments

* Feat(core): add more clear flag item for Camera.clearFlags (#843)

* feat(core): add more clear flag item for Camera.clearFlags

* v0.8.0-alpha.0

* v0.8.0-alpha.1

* Add SpriteRenderer drawMode property(support simple and sliced)  (#828)

* feat: add sprite draw mode(support simple and sliced)

* fix: TextureCube is left-hand,so x need inverse (#855)

* `InputManager` support pointer button and wheel (#831)

* feat: `InputManager` support pointer button and wheel

* Add basic physics joint component include `FixedJoint`, `SpringJoint`, `HingeJoint`  (#853)

* feat: basic physics joint

* Use char cache mode for TextRenderer (#837)

* feat(text): use char cache mode for TextRenderer

* v0.8.0-alpha.2

* v0.8.0-alpha.3

* fix: resolve conflict

* fix: resolve conflict

Co-authored-by: Hu Song <[email protected]>
Co-authored-by: AZhan <[email protected]>
Co-authored-by: singlecoder <[email protected]>
Co-authored-by: luzhuang <[email protected]>
Co-authored-by: zhuxudong <[email protected]>
Co-authored-by: yangfengzzz <[email protected]>
gz65555 added a commit that referenced this pull request Jul 11, 2022
* fix: use string replace asset type to extend easily

* fix: onEndRender trigger error

* fix: remove ms blob deprecated

* build: update typescript version

* feat: update background mesh

* refactor: add gc ignore

* build: physics use oasis-engine dependency

* bump version

* bump version

* feat: add register and reflection object

* feat: add prefab parser

* fix: resourceManager has't destory all cache

* fix: cache promise is not clear

* bump version

* feat: export prefabloader

* fix: dynamic explansion

* feat: add mipmap generate warn

* feat: add mipmap true

* feat: add pixel buffer

* feat: update engine version

* feat: add type watch

* feat: init all project

* build: remove init oasis

* refactor: use modelmesh encode buffer

* Test: Use Floss and Chai to Replace Jest (#778)

test: Use Floss and Chai to Replace Jest

* refactor: remove console

* refactor: add math serialize

* refactor: add model mesh serialize

* refactor: add scene loader

* refactor: delete schema parser

* refactor: add scene loader

* refactor: add index

* refactor: remove toolkit features (#780)

* v0.7.0-beta.4 (#795)

* refactor: fix types error

* Fix:local translate (#706)

* fix(transform):local translate

* Add component denpendent decorator (#796)

* feat: add `dependentComponents` decorator

* ci: remove ci on node 12 (#801)

* Update README.md

* Fix Test Version Error (#802)

* ci: remove ci on node 12

* test: fix version

* feat: add `priority` for renderer to order(#803)

* feat(renderer): add `priority` for renderer to order

* refactor: remove useless import

* Fix SkyBox render mirror problem (#816)

* refactor: fix skybox mirror problem

* fix:   change `region` and `pivot` origin to left-bottom (#809)

* fix:   change `region` and `pivot` origin to left-bottom

* Merge latest main (#820)

* v0.7.0-beta.4

* Update README.md

* Update README.md

* Update README.md

* Add component denpendent decorator (#796) (#807)

* feat: add `dependentComponents` decorator

* fix(Renderer): destroy crash when material is null (#808)

* Improve BlendShape when use attribute mode (#804)

* feat: improve BlendShape when use attribute mode

* v0.7.0-beta.5

* refactor: fix skybox mirror problem

* fix: fixed the bug of animator revert when blendWeight length exceeds 4 (#817)

* fix: fixed the bug of animator revert when blendWeight length exceeds 4

* v0.7.0-beta.6

* refactor: fix shader

* fix(text): fix horizontal and vertical alignment error (#772)

* fix(text): fix horizontal alignment error

Co-authored-by: luzhuang <[email protected]>
Co-authored-by: singlecoder <[email protected]>

* feat: export animation type

* refactor: bump version

* refactor: rename (#827)

* v0.7.0-beta.7

* feat: physics character controller (#818)

* feat: add `CharacterController` for physX backend

* optimization camera code (#830)

refactor: optimization camera code

* Refactor `cloneTo` to `copyFrom` for math library and rename `setValue` to `set` (#844)

* feat: refactor `cloneTo` to `copyFrom` for math library
* feat: rename `setValue` to `set` for math library

* feat: add to Obejct

* feat: remove swc core

* refactor: change toJSON to toObject

* Fix transform`translate` and `rotate` space bug (#847)

* fix: transform`translate` and `rotate` space bug
* refactor: opt comments

* refactor: merge dev/0.8

* refactor: remove console

* Feat(core): add more clear flag item for Camera.clearFlags (#843)

* feat(core): add more clear flag item for Camera.clearFlags

* v0.8.0-alpha.0

* v0.8.0-alpha.1

* feat: update resource process

* Add SpriteRenderer drawMode property(support simple and sliced)  (#828)

* feat: add sprite draw mode(support simple and sliced)

* fix: TextureCube is left-hand,so x need inverse (#855)

* `InputManager` support pointer button and wheel (#831)

* feat: `InputManager` support pointer button and wheel

* Add basic physics joint component include `FixedJoint`, `SpringJoint`, `HingeJoint`  (#853)

* feat: basic physics joint

* Use char cache mode for TextRenderer (#837)

* feat(text): use char cache mode for TextRenderer

* v0.8.0-alpha.2

* v0.8.0-alpha.3

* feat: add script parser

Co-authored-by: gz65555 <[email protected]>
Co-authored-by: ChenMo <[email protected]>
Co-authored-by: AZhan <[email protected]>
Co-authored-by: singlecoder <[email protected]>
Co-authored-by: luzhuang <[email protected]>
Co-authored-by: zhuxudong <[email protected]>
Co-authored-by: yangfengzzz <[email protected]>
gz65555 added a commit that referenced this pull request Jul 20, 2022
* Test: Use Floss and Chai to Replace Jest (#778)

test: Use Floss and Chai to Replace Jest

* refactor: remove toolkit features (#780)

* v0.7.0-beta.4 (#795)

* Fix:local translate (#706)

* fix(transform):local translate

* Add component denpendent decorator (#796)

* feat: add `dependentComponents` decorator

* ci: remove ci on node 12 (#801)

* Update README.md

* Fix Test Version Error (#802)

* ci: remove ci on node 12

* test: fix version

* feat: add `priority` for renderer to order(#803)

* feat(renderer): add `priority` for renderer to order

* Fix SkyBox render mirror problem (#816)

* refactor: fix skybox mirror problem

* fix:   change `region` and `pivot` origin to left-bottom (#809)

* fix:   change `region` and `pivot` origin to left-bottom

* Merge latest main (#820)

* v0.7.0-beta.4

* Update README.md

* Update README.md

* Update README.md

* Add component denpendent decorator (#796) (#807)

* feat: add `dependentComponents` decorator

* fix(Renderer): destroy crash when material is null (#808)

* Improve BlendShape when use attribute mode (#804)

* feat: improve BlendShape when use attribute mode

* v0.7.0-beta.5

* refactor: fix skybox mirror problem

* fix: fixed the bug of animator revert when blendWeight length exceeds 4 (#817)

* fix: fixed the bug of animator revert when blendWeight length exceeds 4

* v0.7.0-beta.6

* refactor: fix shader

* fix(text): fix horizontal and vertical alignment error (#772)

* fix(text): fix horizontal alignment error

Co-authored-by: luzhuang <[email protected]>
Co-authored-by: singlecoder <[email protected]>

* refactor: rename (#827)

* v0.7.0-beta.7

* feat: physics character controller (#818)

* feat: add `CharacterController` for physX backend

* optimization camera code (#830)

refactor: optimization camera code

* Refactor `cloneTo` to `copyFrom` for math library and rename `setValue` to `set` (#844)

* feat: refactor `cloneTo` to `copyFrom` for math library
* feat: rename `setValue` to `set` for math library

* Fix transform`translate` and `rotate` space bug (#847)

* fix: transform`translate` and `rotate` space bug
* refactor: opt comments

* Feat(core): add more clear flag item for Camera.clearFlags (#843)

* feat(core): add more clear flag item for Camera.clearFlags

* v0.8.0-alpha.0

* v0.8.0-alpha.1

* Add SpriteRenderer drawMode property(support simple and sliced)  (#828)

* feat: add sprite draw mode(support simple and sliced)

* fix: TextureCube is left-hand,so x need inverse (#855)

* `InputManager` support pointer button and wheel (#831)

* feat: `InputManager` support pointer button and wheel

* Add basic physics joint component include `FixedJoint`, `SpringJoint`, `HingeJoint`  (#853)

* feat: basic physics joint

* Use char cache mode for TextRenderer (#837)

* feat(text): use char cache mode for TextRenderer

* v0.8.0-alpha.2

* v0.8.0-alpha.3

* Optimization performance for `TextRenderer` to update world positions (#861)

* refactor(text): optimization performance for `TextRenderer` to update world positions

* Fix `InputManager` bug (#863)

* fix: `pointer` position bug
* fix: `pointerMovingDelta` value bug
* fix: input `onPointerXX` bug not follow `Camera` cullingMask

* fix(2d): `SpriteRenderer` can not show error (#865)

* v0.8.0-alpha.4

* v0.8.0-alpha.5

Co-authored-by: Hu Song <[email protected]>
Co-authored-by: ChenMo <[email protected]>
Co-authored-by: AZhan <[email protected]>
Co-authored-by: singlecoder <[email protected]>
Co-authored-by: luzhuang <[email protected]>
Co-authored-by: zhuxudong <[email protected]>
Co-authored-by: yangfengzzz <[email protected]>
luzhuang pushed a commit to luzhuang/engine that referenced this pull request Sep 6, 2022
test: Use Floss and Chai to Replace Jest
@gz65555 gz65555 added the engineering Engineering problems label Jan 10, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
engineering Engineering problems test unit test
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants