キーテイクアウト
- Phantomcssは、視覚回帰テストを実行するnode.jsツールです。これは、Webページ要素が意図したとおりに表示されるかどうかをチェックする自動テストの形式です。これは、ページまたは特定の要素のスクリーンショットを撮影し、保存されたベースライン画像に比較し、スクリーンショットが一致しない場合に違いの画像を作成することで行います。 Phantomcssは、PhantomcssまたはSlimerjsブラウザ、Phantomjs 2またはSlimerjsとの相互作用のためのCasperjsを含むいくつかのコンポーネントに基づいて構築されており、画像を比較するためのJSに似ています。
- Phantomcssを使用するには、テストスイートがnode.jsスクリプトの形で作成されます。テストスイートは、必要なページを開き、スクリーンショットを撮影し、それらを前の実行の画像と比較します。ウェブサイトに変更が加えられた場合、テストを再度実行して、新しいスクリーンショットをオリジナルと比較できます。 テスト中に視覚的な変化が検出された場合、PhantomCSSは変更された領域を強調します。これらの変更を受け入れるために、テストコマンドは追加の–Rebase引数で実行できます。これにより、以前のベースライン画像を新しいものに置き換えます。
- あなたがあなたのキャリアで真剣な開発をしたなら、開発中に自動テストの重要性を認識したとき、あなたはおそらくポイントに達した可能性があります。あなたの経験に応じて、この実現は1つの大きなバーストであなたを襲うか、時間の経過とともに穏やかに来るかもしれませんが、最終的には第二の性質になります。自動テストには、単体テストから、分離されたコードをテストするとき、統合および機能的テストまで、システムのさまざまな部分がどのように一緒に動作するかをテストする際に、さまざまな形式があります。この記事は、一般的な自動テストの概要に関するものではありません。それは、
- 視覚回帰テストと呼ばれる特別で比較的新しいニッチについてです 。
視覚回帰テストは、Webページをテストするための代替アプローチを取ります。要素またはテキスト値がDOMに存在することを確認する代わりに、テストが実際にページを開き、この特定のブロックがに望んでいるように見えるかどうかを確認します。違いを確認するために、例を挙げてみましょう。あなたのウェブサイトに友好的なメッセージであなたの訪問者に挨拶することを想像 それが機能することを確認するために、メッセージを生成するコードを単位テストすることができます(そして必要です)。正しい名前を挿入することを確認します。また、SeleniumまたはProtractorを使用して機能的なテストを作成して、正しいテキストで要素が実際にページに存在するかどうかを確認することもできます。しかし、これで十分ではありません。テキストが正しく生成されたり、DOMに表示されたりするだけでなく、要素全体が正しいように見えることを確認する必要があります。誰かがテキストの色を誤ってオーバーライドしていません。それを行うための多くのツールがありますが、今日は特に1つのオプションを検討します。
phantomcssとは?
Phantomjs 2またはSlimerjs - 2つの異なるヘッドレスブラウザー。どちらもPhantomCSで使用できます。ヘッドレスブラウザは、ユーザーインターフェイスのない通常のブラウザのようなものです。
Webサーバーをインストールするには、NPMプロジェクトの初期化を行い、HTTP-Serverパッケージをインストールします。
プロジェクトフォルダーからnpm開始を実行でき、インデックスページはデフォルトのアドレスhttp://127.0.0.1:8080でアクセスできます。サーバーを起動し、今のところ実行したままにします。しばらくする必要があります。 phantomcssのインストールは簡単です。プロジェクトにいくつかの依存関係を追加するだけです。
これは、ウェブサイトで何も変更していないため予想されることです。何かを壊して、テストをもう一度再実行しましょう。たとえば、index.htmlのスタイルを変更してみてください。たとえば、ブロックのサイズを400pxに減らしてください。次に、テストをもう一度実行して、何が起こるか見てみましょう:
違いが強調されたので、変化を受け入れるにはどうすればよいですか?ブロックの幅の減少に固執し、現在のビューを新しい標準として受け入れたいことをツールに伝えることができるはずです。それを行うには、追加でテストコマンドを実行できます - rebase引数: 2つのダブルダッシュに注意してください。これは、パラメーターを基礎となるコマンドに渡すNPMの方法です。したがって、次のコマンドにより、Casperjs Test test.js -Rebaseが作成されます。この変更を受け入れたので、以前のベースライン画像は新しいものに置き換えられます。
視覚回帰テストには、Phantomcssを使用するには、最初にPhantomCSSにスクリーンショットをキャプチャするものを伝えるテストスクリプトを作成する必要があります。このスクリプトは、javaScriptまたはcoffeescriptで書くことができます。スクリプトの準備ができたら、Phantomjsを使用して実行できます。 PhantomCSSは、指定された要素のスクリーンショットをキャプチャし、それらをベースライン画像と比較し、違いを示すレポートを生成します。 Mocha、Jasmine、Qunitなど、他のテストフレームワークと一緒に使用してください。また、JenkinsやTravis CIなどの継続的な統合システムと統合することもできます。スクリーンショットをキャプチャして比較するプロセスを自動化し、開発者に多くの時間を節約できます。また、ベースラインとテスト画像の違いを簡単に見つけることができる視覚レポートを提供します。さらに、PhantomCSSはレスポンシブデザインテストをサポートしているため、開発者がさまざまな画面サイズでWebページをテストできるようにします。古いベースライン画像を削除して、テストスクリプトを再度実行するだけです。 PhantomCSS will capture new screenshots and use them as the new baseline images. Yes, PhantomCSS can handle dynamic content.これにより、開発者はスクリーンショットをキャプチャする前に遅延を指定し、動的なコンテンツに十分な時間を与えることができます。 It also supports the use of callbacks to wait for specific events before capturing screenshots. PhantomCSS provides several options for debugging tests.メッセージをコンソールにログに記録し、失敗したテストを画像ファイルとして保存し、テスト実行のビデオを作成することもできます。 These features make it easier to identify and fix issues in your tests. Yes, PhantomCSS allows you to customize the comparison process.比較タイプ、不一致の許容範囲、および出力設定を設定できます。 This gives you more control over the comparison process and allows you to tailor it to your specific needs. There are several alternatives to PhantomCSS for Backstopjs、Wraith、Geminiを含む視覚回帰テスト。これらのツールは、PhantomCSと同様の機能を提供しますが、特定のニーズに応じて、さまざまな長所と短所がある場合があります。<span><span><span><div>>Hello, %username%!<span><span></span></span>
</div></span>></span></span>
Phantomcssは、いくつかの主要なコンポーネントの上に構築されています:
semble.js - 画像を比較するためのライブラリ。
テストプロジェクトのセットアップ
サーバーを実行するには、簡単なNPMスクリプトを定義しましょう。次のスクリプトセクションをpackage.json
に追加するだけです<span><span><span><div>>Hello, %username%!<span><span></span></span>
</div></span>></span></span>
<span><span>
</span><span><span><span>></span>
</span> <span><span><span>></span>
</span> <span><span><span><style>></style></span><span>
</span></span><span><span> <span><span>.tag</span> {
</span></span></span><span><span> <span>color: #fff;
</span></span></span><span><span> <span>font-size: 30px;
</span></span></span><span><span> <span>border-radius: 10px;
</span></span></span><span><span> <span>padding: 10px;
</span></span></span><span><span> <span>margin: 10px;
</span></span></span><span><span> <span>width: 500px;
</span></span></span><span><span> <span>}
</span></span></span><span><span>
</span></span><span><span> <span><span>.tag-first</span> {
</span></span></span><span><span> <span>background: lightcoral;
</span></span></span><span><span> <span>}
</span></span></span><span><span>
</span></span><span><span> <span><span>.tag-second</span> {
</span></span></span><span><span> <span>background: lightskyblue;
</span></span></span><span><span> <span>}
</span></span></span><span><span> </span><span><span></span>></span>
</span> <span><span><span></span>></span>
</span>
<span><span><span>></span>
</span> <span><span><span><div> class<span>="tag tag-first"</span>>The moving finger writes, and having written moves on.<span><span></span></span>
</div></span>></span>
</span> <span><span><span><div> class<span>="tag tag-second"</span>>Nor all thy piety nor all thy wit, can cancel half a line of it.<span><span></span></span>
</div></span>></span>
</span> <span><span><span></span>></span>
</span><span><span><span></span>></span></span></span></span></span></span></span>
テストスイートの作成
最初のテストスイートをセットアップするために必要なすべてがあります。 PhantomCSSテストスイートは、node.jsスクリプトの形で作成され、ウェブサイトの必要なページを開き、スクリーンショットを撮影し、前の実行の画像と比較します。 Phantomcss自体のデモに基づいた簡単なテストケースから始めます。
<span>npm init
</span><span>npm install http-server --save-dev</span>
テスト自体を配置したら、残っているのは、テストを実行するスクリプトを定義することだけです。次のスクリプトをpackage.jsonに追加しましょう。
<span>"scripts": {
</span> <span>"start": "http-server"
</span><span>},</span>
<span>npm install phantomcss casperjs phantomjs-prebuilt --save-dev</span>
<span>var phantomcss = require('phantomcss');
</span>
<span>// start a casper test
</span>casper<span>.test.begin('Tags', function(test) {
</span>
phantomcss<span>.init({
</span> <span>rebase: casper.cli.get('rebase')
</span> <span>});
</span>
<span>// open page
</span> casper<span>.start('http://127.0.0.1:8080/');
</span>
<span>// set your preferred view port size
</span> casper<span>.viewport(1024, 768);
</span>
casper<span>.then(function() {
</span> <span>// take the screenshot of the whole body element and save it under "body.png". The first parameter is actually a CSS selector
</span> phantomcss<span>.screenshot('body', 'body');
</span> <span>});
</span>
casper<span>.then(function now_check_the_screenshots() {
</span> <span>// compare screenshots
</span> phantomcss<span>.compareAll();
</span> <span>});
</span>
<span>// run tests
</span> casper<span>.run(function() {
</span> <span>console.log('\nTHE END.');
</span> casper<span>.test.done();
</span> <span>});
</span><span>});</span>
回帰の導入
ここでいくつかの重要なことが起こりました。最初に、Phantomcssは、スクリーンショットBody_0.pngの不一致のためにテストが失敗したと報告しました。不一致は11.41%で測定されます。第二に、現在のバージョンと以前のバージョンの違いは、障害フォルダーに保存されました。開くと、このようなスクリーンショットが表示されます:<span>"test": "casperjs test test.js"</span>
スクリーンショットは、変更された領域を便利に強調しているため、違いを簡単に見つけることができます。
変更を受け入れる
<span><span><span><div>>Hello, %username%!<span><span></span></span>
</div></span>></span></span>
基本の段階が得られたので、このツールを独自のワークフローに統合することを考え始めることができます。それはかなりプロジェクト固有であるため、その詳細には入りませんが、ここに熟考する質問がいくつかあります:実際のウェブサイト、または別のUI要素のみが存在するあるある種のスタイルガイドに対してテストを実行しますか?
Can PhantomCSS handle dynamic content?
How do I debug tests in PhantomCSS?
Can I customize the comparison process in PhantomCSS?
What are the alternatives to PhantomCSS for visual regression testing?
以上がPhantomcssによる視覚回帰テストの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

レスポンシブフォントサイズ(RFS)は、ブラウザの寸法に基づいて要素のフォントサイズプロパティを自動的に計算および更新するエンジンです

書くことができる「未来的な」JavaScriptがあります。 「ステージ0」とは、まだ提案であるJavaScript言語のアイデアを指します。それでも、誰かが向きを変えるかもしれません

2部構成のシリーズのこの2番目の記事では、Temani Afifは、Border-Imageプロパティを使用するのではなく、実験的なスクロール駆動型アニメーションを使用して、最初の記事からSTARレーティングコンポーネントを作成するための代替アプローチを示しています。

フォントはベクトルです。より多くのポイントを持つベクトルアートは、より少ないポイントのベクトルアートよりも大きなファイルになります。カスタムフォントがダウンロードされます。したがって、フォントが少ない

シンプルさは、Webデザインと開発における面白い形容詞です。私は確かに、これまでに行われたほぼすべてのプロジェクトの引用された目標です。誰もキックオフに進みます

非常に多くのWebプロジェクトは、NPMを使用して、フロントエンドとバックの両方で依存関係を引き込みます。 npmインストールと離れて、何千ものファイルを引き出します

ボーダーイメージを定期的に使用しています。しかし、それは最も多く使用されていないCSSツールの1つであり、私の人生では、その理由を理解することはできません。構文が厄介で直感的ではないため、人々が境界イメージを避けている可能性はありますか?おそらくそうです


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

ドリームウィーバー CS6
ビジュアル Web 開発ツール

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境
