ローカルで動作するW3Cのテストスイートを公開します。
「全てパスした」とだけ書くと、あまり良くないことが起きそうなので、ローカルで動作するように修正したCSSセレクタのテストスイートを公開します。
W3Cのテストスイート: http://www.w3.org/Style/CSS/Test/CSS3/Selectors/current/xhtml/index.html
利用される方へ注意点をいくつか
- そのままではパスしないテストも含んでいます(::selection や :first-letter など)。内容を確認し「このテストはパスしなくても良い」ことを判断して使ってください(index.html にヒントが埋まっている場合があります)。
- ブラウザのバグによりパスできないテストも含んでいます(IE の :empty など)。
- 状況依存のテストも含んでいます。動的なテスト(#d1b, #d4)は負荷要因により失敗する場合があります。個別にテストしてください。:link, :visited はブラウザの履歴でテスト結果が変化します。
- テストケースそのものに勘違いやバグがあるかもしれません。見つけた場合はフィードバックを下さい。
- W3Cのサイトには「仕様全てがテストケースに落とし込まれている訳ではない」と明記されています。
zip
http://pigs.sourceforge.jp/blog/200901220358/W3CTest.zip
# 近い将来リンク切れになる可能性があります。
同梱している selector.js は uupaa-0.7.js のテストビルドです。:visited と標準外の機能を切ってあります。
# :visited を切っているため :link が正しく動作しないテストがあります。
使い方
index.html がテストスイートです。四つあるボタンのうち右側の2つがローカル用に修正されたテストケースで、左2つがW3Cのテストそのものです。
いずれかのボタンをクリックすると、40〜60個の iframe を作成しファイルを読み込みます(非力なPCだと辛いかもしれません)。
各テストケースは、<script src="selector.js"> を読み込みます。事前にテストしたいライブラリを1ファイル化し、selector.js にリネームしておいてください。
また、selector.js の末尾にコードを追加しておいてください。ライブラリによっては、Array.forEach ではなく forEach メソッドを追加する必要もあるでしょう。
if (!("forEach" in Array.prototype)) { Array.prototype.forEach=function(fn,me){ for(var i=0,sz=this.length;i<sz;++i){(i in this)&&fn.call(me,this[i],i,this);} }; } var CSSSelector = $; // ここは任意で
抽出要素を着色する部分はこのようになっています。
CSSSelector('p').forEach(function(v) { v.style.color = "green"; });
公開する意味
このテストスイートを公開してしまうと「テストをパスすることが最低ライン」という状況が生まれるかもしれず、作る側にとってはかなりの負担増になるかもしれません。
ただ、Made in Japan として世界に出るなら、暗に品質が求められるでしょう。
技術には競争が、品質には協力が必要です。