JSConf JP 2021 でトークしたスライドです。 このスライドの内容を文字にしているブログ記事はこちら https://blog.nnn.dev/entry/2021/12/03/123000 トークのアーカイブはこちら https://www.youtube.com/watch?v=5H3Sswp5qYg&t=1155s https://jsconf.jp/2021/talk/testing-approach-to-support-web-front-end-replacement
![Webフロントエンドのリプレースを支えるテストの考え方 / JSConf JP 2021](https://cdn-ak-scissors.b.st-hatena.com/image/square/e9400080f9c245d14a19d8c5e2cb6af3fd52e747/height=288;version=1;width=512/https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2F1265fdd7e3a94f13b431508ddecd69b0%2Fslide_0.jpg%3F27870830)
テストとは人によって反応が分かれるものの1つであり、大喜びする人もいれば、見ないようにして去ろうとする人もいます。あなたがどちらの側であるにせよ、ここではフロントエンドのテストは皆のためのものであるということを説明します。実際、テストには多くの種類があり、それがテストに対して初めに恐れや混乱を感じる一因なのかもしれません。 この記事では、特に有名で広く利用されている種類のテストを扱います。なかには目新しいものはないと感じる読者の方もいらっしゃるかもしれませんが、少なくとも復習にはなるでしょう。どちらにせよ、筆者の目標は、この記事を通じて世の中のさまざまな種類のテストについて理解を深めてもらうことです。ここではユニットテスト、統合テスト、アクセシビリティテスト、ビジュアルリグレッションテストなどを一緒に見ていきます。 さらに、Mocha、Jest、Puppeteer、Cypressなど、各種
この記事は リクルートライフスタイル Advent Calendar 2018 8日目の記事です。 2018/12/10更新:続編で フロントエンドでTDDを実践する(react-testing-libraryを使った実践編)を書きました。 はじめに 自分のフロントエンドチームでは、TDDでの開発フローを実施することでフロントエンド開発の課題に向き合っていきます。 今回は、一般的に難しいとされるフロントエンドでのテストについて、どんな方針でテストを書けばいいかについて書いてみたいと思います。 フロントエンド開発の課題 プロジェクトによりますが、テストに関連するものでは以下のようなものが挙げられます。 実装する仕様について、プロジェクト内でどう認識合わせするか? 開発工程のリライアビリティをどう担保するか? テストの精度、粒度をどう考えるか?(クロスブラウザ、ユーザーの操作等の副作用、コスト
・ログイン後の一覧画面に遷移して、ID/パスワードのアサーションとキャプチャ ・リストで以下の要素を登録してキャプチャ(入力したものが、画面にリンクとして反映される) 入力値:javascript, ruby, scala ・リストの順番を入れ替えてキャプチャ 別タブの操作 別タブを開くリンクをクリックする (別タブの操作)タイトルをアサーション・キャプチャ (別タブの操作)タブを閉じる 元のタブでキャプチャする ブラウザバック・フォワードの操作 リストの任意の項目(同タブリンク)をクリックする タイトルをアサーションして、キャプチャ 一覧画面に戻る、進むを行い、それぞれでキャプチャする テストコード 上記で用意したテストケースを網羅できるテストコードを書いていきます。 const puppeteer = require('puppeteer'); const loginUrl = 'ht
某所で書いたものを公開用に書き直したもの 前提 フロントエンドでTDDは難しい、というかほぼ不可能である。なぜなら事前に副作用をデータとして表現できるか不明だからだ。たとえばあなたのプロダクトの画面の何処かにボタンを追加するために、その内部表現を事前に思い浮かべることが可能だろうか? react-redux などのFluxフレームワークは如何に副作用をアクションとして表現することで、テスト・デバッグのための情報を残すか、という視点で発展してきた側面がある。あの冗長なアクション定義は、全てデバッグのために書いていると言っても、過言ではない。それすら「Textは文字がある」といったトートロジーなデータになりがち。 フロントエンドの現実的な単体テストは、他の開発者のために、自分が書いたコードの要求を満たしているか検知する手段として、防衛的にテストアフターしておく。これぐらいしか現実的な手法がない
次のようなテストコードを書きます。(これはMochaを使っていますが大体どんなテストフレームワークでも同じことが出来ます。) 次のスナップショットでは、transformというJSONを入力に受け取り、JSONを出力する関数をテストしています。 snapshot-test.js: const fs = require("fs"); const path = require("path"); const assert = require("assert"); const fixturesDir = path.join(__dirname, "snapshots"); // transform function const transform = require("../transform"); describe("Snapshot testing", () => { fs.readdirSy
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く