並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 19 件 / 19件

新着順 人気順

Jestの検索結果1 - 19 件 / 19件

  • そのテスト、最後まで実行されていますか? jestとnpm-run-allの恐るべき罠

    皆さんこんにちは。この記事では、筆者が最近業務中に経験した恐るべき罠についてシェアしたいと思います。 CIでユニットテストを実行することは、とても多くのプロジェクトで行われています。ユニットテストは特に、既存のコードの変更を自信を持って行うために必要なものです。弊社でも、CI (GitHub Actions) でユニットテストを実行しています。 あるとき、CIの挙動が不安定になったことをきっかけに、CI上でのユニットテストの実行について調べてみました。その結果、とんでもないことが判明したのです。 不安定になったCI 時折、CIにすごく時間がかかり、30分経ったあたりでタイムアウトしてしまうことがありました。そのときのログを見てみると、jestによるユニットテストが実行されている最中に、何のログも出力せずに突然止まっているようでした。そのようなときはリトライするとそこそこの確率で成功します。

      そのテスト、最後まで実行されていますか? jestとnpm-run-allの恐るべき罠
    • フロントエンドのテスト基盤を Jest から Vitest に移行した話

      こんにちは。ナレッジワークの torii です。 7 月にフロントエンドエンジニアとして入社してもうすぐ半年、そろそろ技術記事の一つも書きたいなと思っていたところに、ちょうどいいネタを見つけたので投稿してみます! Jest から Vitest に移行してみた 早速やったことですが、フロントエンドのテストフレームワークを Jest から Vitest に移行しました。理由としては、Jest が CJS を前提として動作しており、ESM 前提のモジュールを動かすのに一手間も二手間もかかるからです。 ナレッジワークのフロントエンドは Next.js を採用しており、テストフレームワークには Next.js と相性の良い Jest を採用していました。関数単位のテストや UI コンポーネントのテストを書く分には問題なかったのですが、それより上層(ページなど)になるとたちまち ESM 互換性の問題を

        フロントエンドのテスト基盤を Jest から Vitest に移行した話
      • Vite は使ってないけど Jest を Vitest に移行する

        上記以外で特筆すべき点として、他の開発者(≒チームメンバー)にとっては、変更の影響をほとんど受けずに、ノーコストで上記恩恵を受けられる点があります。 これは Vitest の Jest に対する高い互換性のおかげでテストコードの書き方に大きな変更がなかったことと、テスト実行コマンドを npm-scripts によって隠蔽していたことによるもので、移行したことに気づきさえしない可能性もあります。 Vite を使ってないのに Vitest 使ってええんか? 今回 Jest から Vitest への移行を行ったプロジェクトは、開発サーバーやプロダクションビルドには Webpack を使用しており、Vite は一切使用していませんでした。 そういったプロジェクトにおいても、Vite をベースとしたテストフレームワークである Vitest は使用して良いものでしょうか? これについては Vitest

          Vite は使ってないけど Jest を Vitest に移行する
        • Node.js18を20にアップデートして、jestの実行速度を3倍にした - くらしのマーケット開発ブログ

          こんにちは!バックエンドエンジニアのハラノです。 くらしのマーケットのシステムの中には、Node.js(NestJS)を使用したマイクロサービスが存在しており、今回 Node.js のバージョンアップを行いました。 バージョンアップの方針及び、実際にアップデートを行う際に出てきた問題とその対策をご紹介します。 バージョンアップの方針 バージョンアップの結果 各種対応において、発生した問題と対応 TypeScript のバージョンアップ NestJS のバージョンアップ @nestjs/common から HttpService, HttpModule が削除された Inject にInject(TestRepository.name)のように、クラス名を渡している部分について、依存関係の解決が行えなくなっていた RxJS のtoPromiseが Deprecated になった TypeOR

            Node.js18を20にアップデートして、jestの実行速度を3倍にした - くらしのマーケット開発ブログ
          • @swc/jestで手間をかけずにテストを早くする - ドワンゴ教育サービス開発者ブログ

            こんにちは、ドワンゴ教育事業 Web フロントエンドチームの猪井です。 この記事では babel-jest から @swc/jest に移行することで Jest によるテストが速くなった事例について紹介します。 JavaScript のテストツールは、Vitest のバージョンが 1 を迎えたり Bun が登場したりして、よく使われる Jest 以外にもよさそうな選択肢が増えています。業務の手が少し空いたタイミングでそれらについて調査し実際に試してみたところ、最終的に @swc/jest を使用することで既存のテストを大きく書き換えることなく実行時間を短縮できました。 今回試した JavaScript のテストツール 今回は Vitest、Bun、そして @swc/jest の 3 つを試してみました。 これら以外にも、Node.js 自体に搭載されているテストランナーや、@swc/jes

              @swc/jestで手間をかけずにテストを早くする - ドワンゴ教育サービス開発者ブログ
            • Migrating away from Jest and achieving over 90% reduction in running time

              Unfortunately, I’ve been using Jest since 2019. No offense to the Jest team – I’m pretty sure they’re awesome and way smarter than I am, but I wish I had made this move earlier in this project. I’m not talking about UI testing here, so assume everything I’m saying is about server-side JS. If you’re happy with Jest, don’t switch! I’m not trying to convince anyone. I’m just sharing my experience bec

              • jest基礎とテスト戦略 - iimon TECH BLOG

                はじめに こんにちは。iimonでエンジニアをしている林と申します。 本記事はiimonアドベントカレンダ11日目の記事となります。 今回テスト戦略やjestについて調べたので記事にしてみようと思います。 テスト戦略 今回挙げるテストの種類以外にも様々なテストがあると思いますが、 今回はフロントエンド開発において必ず出てくるであろう「ユニットテスト」「インテグレーションテスト」「E2Eテスト」についてのテスト戦略を解説していきます。 テストの種類 上記で挙げたテストの詳細については下記になります。 ユニットテスト(単体テスト) 最も基本的なテスト 関数やメソッドなどの単位での動作を検証する 小さい単位で見ているので速度が速い 全体や結合してる部分など複数の単位が合わさった時に起きてしまう不具合については検出出来ない。 結合テスト(インテグレーションテスト) 複数のユニットを連携させて、正し

                  jest基礎とテスト戦略 - iimon TECH BLOG
                • Jest を導入して RSpec と使い分け始めた話 - SmartHR Tech Blog

                  まえがき こんにちは!SmartHR 基本機能の B チームで開発をしている@ron です。 今回は、私の所属する B チームで品質と開発効率の向上のため Jest を導入するにあたり、チームで行った議論と導入した結果をご紹介します。 Rails を使用している SmartHR では RSpec を使用してテストを実施していますが、テストが増えるにつれて CI での実行が非常に遅くなることが課題となっていました。 Jest を導入したことで、テストの網羅性が上がり、テストパターンを増やしつつ、テストの実行時間の増加を抑えることができました。 また、Jest を導入するにあたり、Jest と RSpec それぞれでどういったテストを書くべきか、どういったテストを書かないべきかを議論し、整理したので、その内容もお話しします。 SmartHR のプロダクト規模について SmartHR は、企業情

                    Jest を導入して RSpec と使い分け始めた話 - SmartHR Tech Blog
                  • TypeScriptの環境構築から分かる、Jestを使用したテストの方法 | DevelopersIO

                    こんにちは、戸田です。 このブログではTypeScriptの環境構築からJestを使用した簡単な四則演算のテストの方法を解説します。 環境構築 まずは環境構築をします。 今回はかなりシンプルな環境を構築します。 今回使用した環境は以下です。 Node.js v21.5.0 TypeScript v5.4.0 Jest v29.7.0 TypeScriptのインストール package.jsonをセットアップする npm init -y TypeScriptをインストールする npm install typescript --save-dev Node.jsのプログラムに必要な型宣言ファイルnode.d.tsをインストール npm install @types/node --save-dev TypeScriptの設定ファイルtsconfig.jsonを初期化 npx tsc --init

                      TypeScriptの環境構築から分かる、Jestを使用したテストの方法 | DevelopersIO
                    • To be, or not to be: JestのtoBe()の動きを知ろう!

                      こんにちは!サイボウズ株式会社フロントエンドエンジニアの おぐえもん(@oguemon_com) です。 JavaScriptのテスティングフレームワークの定番であるJestには、toBe()という便利なMatcher(評価用関数)が用意されています。 toBe()はexpect(A).toBe(B)の形式で記すことでAとBが等しいかどうかを評価してくれるのが特徴で、最も基本的な存在なのでテストコード初心者の方も多用されていることと思います。しかし、toBe()の挙動を正しく認識しておかないと、思わぬミスを招きかねません。そこで、この記事では、ある2つの値がtoBe()で等価判定されるのか、はたまた等価判定されないnot.toBe()なものなのかを見ながら、その挙動に迫ります。 この記事は執筆時点の最新版であるjest@29.7.0の挙動に基づいています。 toBe(), or not.t

                        To be, or not to be: JestのtoBe()の動きを知ろう!
                      • DynamoDB LocalからLocalStackへの移行とJestによる自動テストの並列実行 with dynamodb-toolbox - ROXX開発者ブログ

                        この記事は個人ブログと同じ内容です zenn.dev はじめに DynamoDB Localを使用してJestを介した自動テストの際に、並列実行時に予期しないエラーに直面しました。--runInBandオプションを使って回避していたのですが、テストの数が増えてきたため、直列で実行するのがしんどくなってきたので、解決策について模索してみました。 DynamoDB Localの制約と課題 Jestを使用してテストを並列実行すると、DynamoDB Localが競合状態になり、予期しないエラーが発生することがありました。どうやら、この記事によるとDynamoDB Localは、内部的にSQLiteを使用しているらしいので、同時書き込みが難しそう。。。 LocalStackへの移行 そこで、LocalStackへの移行を試してみました。LocalStackは、AWSのクローン環境を提供し、ローカル

                          DynamoDB LocalからLocalStackへの移行とJestによる自動テストの並列実行 with dynamodb-toolbox - ROXX開発者ブログ
                        • React テストコード(Jest, React Testing Library)の学びと Tips - Qiita

                          はじめに 早いもので2023年も終わりが近づいてきました。皆様はいかがお過ごしでしょうか。毎年アドベントカレンダーの時期になると、今年一年で学び経験した技術の知識を棚卸しするために記事を書いています。2023年はよくテストを書いた年でした。React のテストコードで学んだことを書き記します。 テストにはいわゆる手動テストと自動テストがあります。どちらも必要ですし、用いる手法はケースバイケースなのかなと思います。テストにかける時間や労力は短期的に見るか長期的に見るかで手動テストと自動テストのどちらが良いかは一概には言えません。多くの場合は組み合わせて行うと思います。 テストレイヤーの切り方として、Ice-Cream Cones, Testing Pyramids, Testing Trophy など様々な考え方があります。上層ほど高コスト・低速。下層ほど低コスト・高速と言われています。 出

                            React テストコード(Jest, React Testing Library)の学びと Tips - Qiita
                          • Node.js組み込みテストランナーとJest比較メモ

                            Node.jsの組み込みテストランナーとは 英語圏ではNode.js built-in test runnerとか呼ばれている存在で、Node.jsの組み込みテストランナーのこと。恐らくDenoのテストランナーに対抗して生まれた気配がする(Node.jsはDenoに機能追加があると真似する傾向があるため Node.jsの組み込みテストランナーは機能が二分されており、テストランナーとアサートに分かれている Jestみたいにエコシステムが発達しておらず、標準ではdescribeなどはimportする必要がある。TypeScriptをテストする場合は間にレジスター[^1]を嚙ます必要があるが、本項では扱わない Jest関数との対応リスト describe, it, beforeAll, afterAll, beforeEach, afterEach辺りは違和感がなかったが、それ以外は軒並み互換性

                              Node.js組み込みテストランナーとJest比較メモ
                            • Jest のメモリまわりでハマった話 - Sansan Tech Blog

                              こんにちは、Sansan Engineering Unit の渡邉です🦐 私たちのチームではTypeScriptで開発しており、テストはJestを用いて書いています。ある日からテストが結構な頻度で落ちてしまうように(FLAKY *1に)なっていました...。 そこで、テストがFLAKYになっている原因を深掘り調査したところ、Jestのメモリまわりについて解像度が高まったので、備忘録代わりに残します。 結論 Jestにおけるタイムアウトエラーとメモリエラー(Out Of Memory)を次のオプションを設定し、防止できました。 `jest.config.js` ... testTimeout: 30000, // タイムアウト時間を延長 workerIdleMemoryLimit: '1024MB', // ワーカーが使用できるメモリ上限を制限 maxWorkers: 4, // テストを

                                Jest のメモリまわりでハマった話 - Sansan Tech Blog
                              • Release v30.0.0-alpha.1 · jestjs/jest

                                Features [jest-config] [BREAKING] Add mts and cts to default moduleFileExtensions config (#14369) [jest-config] [BREAKING] Update testMatch and testRegex default option for supporting mjs, cjs, mts, and cts (#14584) [@jest/core] [BREAKING] Group together open handles with the same stack trace (#13417, & #14543) [@jest/core, @jest/test-sequencer] [BREAKING] Exposes globalConfig & contexts to TestSe

                                  Release v30.0.0-alpha.1 · jestjs/jest
                                • Node + Hono + Prisma + Jestで環境構築

                                  { "extends": "@tsconfig/strictest/tsconfig.json", "compilerOptions": { "target": "es2016", "module": "commonjs", "outDir": "dist", "noPropertyAccessFromIndexSignature": false, "noImplicitReturns": false, "baseUrl": "./", "paths": { "@/*": ["src/*"], "~/*": ["./*"] }, "esModuleInterop": true, "isolatedModules": true, "forceConsistentCasingInFileNames": true, "strict": true, "skipLibCheck": true, },

                                    Node + Hono + Prisma + Jestで環境構築
                                  • Release v29.6.0 · jestjs/jest

                                    Features [jest-circus, jest-snapshot] Add support for snapshot matchers in concurrent tests (#14139) [jest-cli] Include type definitions to generated config files (#14078) [jest-snapshot] Support arrays as property matchers (#14025) [jest-core, jest-circus, jest-reporter, jest-runner] Added support for reporting about start individual test cases using jest-circus (#14174) Fixes [jest-circus] Preve

                                      Release v29.6.0 · jestjs/jest
                                    • (2023/06)Jest における CommonJS / ECMAScript Modules の扱いについて - Qiita

                                      1. 概要 JavaScript における CommonJS(以下、CJS)と ECMAScript Modules(以下、ESM)の問題は色々なところで発生する厄介な問題です。 Jest を使ったテストコードにおいてもこの問題に直面することがあります。 この文章は Jest における CommonJS / ECMAScript Modules の扱いについて包括的な情報提供を目指して書いています。 これを書くにあたって私は様々な情報収集をした他、不明瞭なところは実験サンプルを作って動きをみたり、関連するモジュールの中身を見てみたり、色々なことをしています。 正確な記載を心掛けますが、間違いを発見した場合は遠慮なく指摘をしてください。しかし、Node.js の世界は進歩が速いので受けた指摘をこの文章に反映するかどうかはわからないことを予め申し上げておきます。 基本的にはこの文章は執筆時点の

                                        (2023/06)Jest における CommonJS / ECMAScript Modules の扱いについて - Qiita
                                      • jest.mockがどう動いてるのか実行されたコードを覗く

                                        株式会社IVRy (アイブリー)のエンジニアのkinashiです。 IVRyではテストツールとして Jest を使っています。 普段なにげなく使っているモックですが、 import したモジュールをどうやって上書きしてるのか気になったことはありませんか? 呼び出す前に上書きしてるのかなという想像は付きますが、実際どんなコードが動いているのか見てみようと思います。 モックと言っても様々あり、下記の記事で紹介されているようにテストダブルの考え方では Dummy Object や Test Spy など5つのカテゴリに分類されます。 Jestにもこれらのモックを使用するための機能がありますが、この記事ではテスト対象のファイルで import しているモジュールを jest.mock を使用してモックした際の挙動について見ていきます。 実行環境 下記の package 構成で確認しました。

                                          jest.mockがどう動いてるのか実行されたコードを覗く
                                        1