タグ

ブックマーク / azukiazusa.dev (11)

  • 単体テストでスクリーンリーダーをシミュレートする Virtual Screen Reader

    単体テストでスクリーンリーダーをシミュレートする Virtual Screen Reader 2024.03.16 Virtual Screen Reader は単体テストのためにスクリーンリーダをシミュレートするライブラリです。このライブラリを使うことでマウスやキボードの操作をテストするように、スクリーンリーダーにより期待する読み上げが行われるかどうかをテストできます。なお、Virtual Screen Reader はあくまでスクリーンリーダーの挙動を模倣したものであり、現実で使われているスクリーンリーダーによるテストを代替するものではないことに注意してください。

    単体テストでスクリーンリーダーをシミュレートする Virtual Screen Reader
    Pasta-K
    Pasta-K 2024/04/17
  • 新しい UI テストの手法を提供するテストライブラリ SafeTest

    新しい UI テストの手法を提供するテストライブラリ SafeTest 2024.02.25 SafeTest は Playwright と Jest/Vitest を組み合わせた UI テストライブラリです。特定のライブラリに依存せず、React, Vue, Angular, Svelte などのフレームワークに対応しています。SafeTest は単体テストと Playwright を使った E2E テストの手法を組み合わせることで、それぞれの手法が抱える欠点を補うことを目指しています。 SafeTest は Playwright と Jest/Vitest を組み合わせた UI テストライブラリです。特定のライブラリに依存せず、React, Vue, Angular, Svelte などのフレームワークに対応しています。 従来のフロントエンドのテストの手法は Testing Libra

    新しい UI テストの手法を提供するテストライブラリ SafeTest
    Pasta-K
    Pasta-K 2024/02/25
  • input[type=checkbox] 要素に switch 属性を指定することによる HTML 標準のスイッチ UI の提案

    input[type=checkbox] 要素に switch 属性を指定することによる HTML 標準のスイッチ UI の提案 2023.12.23 スイッチは多くのウェブサイトで使われているものの、HTML の標準要素としては存在していませんでした。そのため多くの開発者は、スイッチを実装するために独自の実装を行っていましたが、このような独自の実装はアクセシビリティの問題を引き起こす可能性がありました。この問題を解決するために、WHATWG により `input[type="checkbox"]` 要素に `switch` 属性を追加することが提案されました。この属性を指定することで、チェックボックスをスイッチとして利用できます。 input 要素の switch 属性は 2023 年 12 月現在実験的に実装されている機能です。将来的に仕様が変更される可能性があります。 スイッチ とは

    input[type=checkbox] 要素に switch 属性を指定することによる HTML 標準のスイッチ UI の提案
    Pasta-K
    Pasta-K 2023/12/23
  • `<details>` 要素の `name` 属性による排他的なアコーディオンの実装

    `<details>` 要素の `name` 属性による排他的なアコーディオンの実装 2023.10.08 `<details>` 要素の `name` 属性を利用してグループ化することにより、排他的なアコーディオンを JavaScript なしで実装できます。 <details> 要素の name 属性は 2023 年 10 月 8 日現在 Chrome Canary のみ実装されています。 アコーディオンは Disclosure(コンテンツを折りたたむ、または展開することを可能にするウィジェット)が垂直に並べられた UI の総称です。いくつかのアコーディオンはグループ化された Disclosure の中でただ 1 つしか開くことができないという制約を持っています(排他的なアコーディオン)。つまり、ある Disclosure が開いているときに、他の Disclosure を開いた場合に

    `<details>` 要素の `name` 属性による排他的なアコーディオンの実装
    Pasta-K
    Pasta-K 2023/10/12
    これ出来るのか
  • forcusgroup で矢印キーによるフォーカスナビゲーションを実装する

    forcusgroup で矢印キーによるフォーカスナビゲーションを実装する 2023.10.09 カスタム UI ウィジェットを実装する際には、ウィジェットのロールに応じたキーボード操作によるフォーカスナビゲーションを実装することが求められています。従来このようなキーボード操作は JavaScript を用いて実装する必要がありました。`focusgroup` の提案は、このようなキーボード操作を独立して使用できるプリミティブとして提案されています。この機能を利用することで、開発者は JavaScript を用いることなく一貫したフォーカスナビゲーションを実装できます。 この記事で紹介している機能は Chrome Canary の Experimental Web Platform features フラグを有効にした場合のみ利用可能です。将来にわたって API が変更される可能性がありま

    forcusgroup で矢印キーによるフォーカスナビゲーションを実装する
    Pasta-K
    Pasta-K 2023/10/12
  • ポップオーバー API で JavaScript を使わずにポップアップを表示する

    ポップオーバー APIJavaScript を使わずにポップアップを表示する 2023.06.11 Chrome 114 から追加されたポップオーバー API を使うと、JavaScript を使わずに簡単にポップアップを表示することができます。 Chrome 114 から追加された ポップオーバー API を使うと、JavaScript を使わずに簡単にポップアップを表示できます。ただポップアップとして表示・非表示を切り替えられるだけでなく、以下のような複雑な要素もデフォルトでサポートしています。 ポップアップの外側をクリックするとポップアップが閉じる Escape キーを押すとポップアップが閉じる 最も大きな z-index の上に表示される(top layer) ポップアップが非表示になったとき、ポップアップ内にフォーカスがある場合前にフォーカスしていた要素にフォーカスが戻る

    ポップオーバー API で JavaScript を使わずにポップアップを表示する
    Pasta-K
    Pasta-K 2023/09/19
  • アニメーションの無効設定は prefers-reduced-motion に任せるか、アプリケーションの設定で制御するか

    アニメーションの無効設定は prefers-reduced-motion に任せるか、アプリケーションの設定で制御するか 2023.08.06 prefers-reduced-motion とは、ユーザーの環境設定によって余計な動きを抑制することを要求したことを検出するメディアクエリです。この設定は各 OS ごとに設定できます。ユーザーがアニメーションを無効にできることは、アクセシビリティの観点で重要です。prefers-reduced-motion によりアニメーションを無効にするのでも十分ですが、アプリケーションの設定として持たせるべきだと考えています。 prefers-reduced-motion とは prefers-reduced-motion とは、ユーザーの環境設定によって余計な動きを抑制することを要求したことを検出するメディアクエリです。この設定は各 OS ごとに以下のよう

    アニメーションの無効設定は prefers-reduced-motion に任せるか、アプリケーションの設定で制御するか
    Pasta-K
    Pasta-K 2023/08/07
  • HTML の仕様に search 要素が追加された

    使い方 <search> 要素は暗黙のロールとして search ロールを持ちます。ブラウザのアクセシビリティ API により search ランドマークが公開され、スクリーンリーダーなどの支援技術を使用するユーザーが素早く検索フォームに移動できるようになります。 <header> 要素や <footer> 要素と同じく、なにか特別な機能を持ってはいません。単にランドマークとしての役割を果たすだけの要素です。 以下は search ロールを使用した例です。VoiceOver ローターを起動してランドマークを選択するとバナー、検索、文、フッターが表示されています。ここで検索を選択すると検索フォームに移動できます。 通常、<search> 要素は少なくとも 1 つの入力要素を含んでいるはずです。また必須ではないものの、検索を開始するためのボタンも存在することが期待されています。 <searc

    HTML の仕様に search 要素が追加された
    Pasta-K
    Pasta-K 2023/06/01
  • Web アプリケーションエンジニアのためのウェブアクセシビリティの基礎

    Web アプリケーションエンジニアのためのウェブアクセシビリティの基礎 2023.02.18 ウェブアプリケーションエンジニアを対象に、アクセシビリティの対応について解説した記事。アクセシビリティを向上させるためには、正しいHTMLの書き方が必要である。HTML要素には、アクセシビリティに関する機能が元々備わっているため、適切なHTMLを選択し使用することが大切だ。複雑なUIの場合はWAI-ARIAを使用し、ARIA Authoring Practices Guideに基づき適切に実装する必要がある。UIライブラリ選びの際には、WAI-ARIAに従った実装を行っているかが基準の1つとなる。 この記事は、ウェブアプリケーションエンジニアとして仕事をされているほうを対象に書かれています。日々のウェブフロントエンドの開発の中で意識しておきたい基礎的な内容をメインに記載しています。 そのため、ここ

    Web アプリケーションエンジニアのためのウェブアクセシビリティの基礎
    Pasta-K
    Pasta-K 2023/02/20
    “ユーザビリティはまず土台となるアクセシビリティが確保されていて使える状態がある前提を元に、さらにどれだけ使いやすいか” / “ロールは約束という原則”
  • 単体テストの単位はコードではなく振る舞いである

    単体テストの単位はコードではなく振る舞いである 2023.01.07 単体テストの目的は、ソフトウェア開発プロジェクトを持続可能なものにすることです。この目的を達成するための単体テストの機能の 1 つにリファクタリングに対する耐性が上げられます。これは内部のコードを変更した前後でも、外部の振る舞いから見た振る舞いが壊れていないことを保証してくれる度合いです。この耐性が高ければ、開発者は安全にコードを変更できます。 この記事では、単体テストをコード単位で書いた場合と振る舞い単位で書いた場合をそれぞれ提示して、リファクタリングに対する耐性がどのように異なるのかを見ていきます。 単体テストの目的は、ソフトウェア開発プロジェクトを持続可能なものにすることです。この目的を達成するための単体テストの機能の 1 つにリファクタリングに対する耐性が上げられます。これは内部のコードを変更した前後でも、外部の

    単体テストの単位はコードではなく振る舞いである
    Pasta-K
    Pasta-K 2023/01/08
  • 今すぐできる Web アクセシビリティ改善

    適切なロールを持った要素を適切な箇所で使うことが大切です。 button ロールを持つ要素は大抵のスクリーンリーダーで「${ボタン内のテキスト} ボタン」のように読み上げられます。その後現在ボタン上にいて、ボタンをクリックできるということが読み上げられます。 以上のことより、onClick がついていてクリック可能な要素には大抵 <button> を使っておけばいいことがわかります。 <button> に変更するときの注意 <div> や <span> タグをそのまま <button> に変更すると、思わぬ変化が起きてしまう可能性があるので注意が必要です。まず <button> に変更するとブラウザのデフォルトのスタイルが適用されるので、見た目が大きく崩れてしまいます。以下のようにデフォルトのスタイルを打ち消す CSS を適用させて置くといいでしょう。 .style-reset-butto

    今すぐできる Web アクセシビリティ改善
    Pasta-K
    Pasta-K 2023/01/06
  • 1