Tests share module state: add a shared loader that resets modules per test

オープン
#40 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
3/5
見積もり時間
1〜2日
初心者へのやさしさ
68/100
issue の種類
バグ
明瞭さ
明確に書かれている
活発さ
活発
技術スタック
javascript
領域
testing

調査の方向性

Read tests/unit/game-moves.test.js and tests/integration/game-flow.test.js, then inspect the module-level DOM references in js/board.js and js/game.js. Implement the shared loader and position-builder described in the issue, update both test files, and run npm test and npm run lint. Done when consecutive loads are shown to be independent and both test files use the helper.

索引モデルが issue の本文から書いたものです。

説明

severity: medium testing

Summary

Each beforeEach builds a new JSDOM and then requires the game modules, but nothing calls jest.resetModules(). A second test in the same file would get the cached modules, which still hold the first test's DOM nodes and game state.

Where

  • tests/unit/game-moves.test.js:6-109, tests/integration/game-flow.test.js:6-116 (about 100 duplicated setup lines each)
  • js/board.js:5, js/game.js:17-18 (DOM nodes captured at module load)
  • js/game.js:27 (reset happens only when history is empty)

Details

This is from reading the code, assuming Jest's default of one module registry per test file; the suite was not run. It is invisible today only because each file holds exactly one test.

Impact

The first contributor who adds a second test to either file gets order-dependent failures or false passes. This blocks the test work in #41 and #42.

Suggested fix

Move the setup into one helper, for example tests/helpers/load-game.js, that calls jest.resetModules(), creates the JSDOM, sets the globals, requires the modules and returns { window, game, board }. Add a position-builder that places pieces on an empty board and sets king positions.

Acceptance criteria

  • Both existing test files use the helper
  • A test proves two consecutive loads are independent
  • A position-builder exists for non-starting positions

Getting started

  • Relevant files: tests/unit/game-moves.test.js, tests/integration/game-flow.test.js
  • How to run tests: npm install, then npm test and npm run lint
  • Related docs: docs/ARCHITECTURE.md, .github/CONTRIBUTING.md

Filed by repo-audit/full-audit at 8a2c86c. Severity: medium. Effort: S. audit-key: testing|tests/unit/game-moves.test.js|beforeEach

主要言語
JavaScript
スター
4
フォーク
2
PR マージ指標
30日以内にマージされた PR はありません

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

TMHSDigital/Static_Chess のほかの issue

TMHSDigital/Static_Chess の issue をすべて見る

似ている issue

JavaScript の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。