E2Eテストを書くときにidやclass属性を使うのはやめた方が良い理由

E2Eテストを書く場合に、画面のHTML要素を取得してクリックしたり、特定のモーダルが閉じるのを待ったりします。

この時にHTMLの要素を特定する必要があるのですが、idやclass属性を使うことはやめた方が良いとされています。

idやclassは実際の実装において使用されるものであり、実装の変更によって容易に変更される可能性があります。

これらの属性をE2Eテスト側で参照してしまうと、実装に変更に伴って頻繁にE2Eが動かなくなる可能性があります。

さらにどのidやclassがE2E側で参照されているかを常に気にかけながら変更をしないといけません。

これはコストがかかります。

これまでにやった方法で良かったのはカスタム属性を作ってしまうことです。

例えば data-e2e-id など。