diff --git a/src/tests/DawnTest.cpp b/src/tests/DawnTest.cpp
index a44581c..4827d8b 100644
--- a/src/tests/DawnTest.cpp
+++ b/src/tests/DawnTest.cpp
@@ -684,6 +684,10 @@
                                    mParam.adapterProperties.deviceID);
 }
 
+bool DawnTestBase::IsANGLE() const {
+    return !mParam.adapterProperties.adapterName.find("ANGLE");
+}
+
 bool DawnTestBase::IsWARP() const {
     return gpu_info::IsWARP(mParam.adapterProperties.vendorID, mParam.adapterProperties.deviceID);
 }
diff --git a/src/tests/DawnTest.h b/src/tests/DawnTest.h
index 9137ec0..6d90c94 100644
--- a/src/tests/DawnTest.h
+++ b/src/tests/DawnTest.h
@@ -266,6 +266,7 @@
     bool IsNvidia() const;
     bool IsQualcomm() const;
     bool IsSwiftshader() const;
+    bool IsANGLE() const;
     bool IsWARP() const;
 
     bool IsWindows() const;
diff --git a/src/tests/end2end/DepthStencilCopyTests.cpp b/src/tests/end2end/DepthStencilCopyTests.cpp
index ce20ef1..be8d00e 100644
--- a/src/tests/end2end/DepthStencilCopyTests.cpp
+++ b/src/tests/end2end/DepthStencilCopyTests.cpp
@@ -330,6 +330,9 @@
 
 // Test copying the stencil-only aspect into a buffer.
 TEST_P(DepthStencilCopyTests, FromStencilAspect) {
+    // TODO(crbug.com/dawn/634): Diagnose and fix ANGLE failure.
+    DAWN_SKIP_TEST_IF(IsANGLE());
+
     constexpr uint32_t kWidth = 4;
     constexpr uint32_t kHeight = 4;
 
@@ -355,6 +358,9 @@
     // It passes on AMD Radeon Pro and Intel HD Graphics 630.
     DAWN_SKIP_TEST_IF(IsMetal() && IsIntel());
 
+    // TODO(crbug.com/dawn/634): Diagnose and fix ANGLE failure.
+    DAWN_SKIP_TEST_IF(IsANGLE());
+
     wgpu::Texture depthStencilTexture = CreateDepthStencilTexture(
         9, 9, wgpu::TextureUsage::RenderAttachment | wgpu::TextureUsage::CopySrc, 2);
 
@@ -397,6 +403,9 @@
     // T2TBothAspectsThenCopyNonRenderableStencil does not use RenderAttachment and works correctly.
     DAWN_SKIP_TEST_IF(IsMetal() && IsIntel());
 
+    // TODO(crbug.com/dawn/634): Diagnose and fix ANGLE failure.
+    DAWN_SKIP_TEST_IF(IsANGLE());
+
     constexpr uint32_t kWidth = 4;
     constexpr uint32_t kHeight = 4;
 
@@ -418,6 +427,9 @@
 // Test that part of a non-renderable stencil aspect can be copied. Notably,
 // this test has different behavior on some platforms than T2TBothAspectsThenCopyStencil.
 TEST_P(DepthStencilCopyTests, T2TBothAspectsThenCopyNonRenderableStencil) {
+    // TODO(crbug.com/dawn/634): Diagnose and fix ANGLE failure.
+    DAWN_SKIP_TEST_IF(IsANGLE());
+
     constexpr uint32_t kWidth = 4;
     constexpr uint32_t kHeight = 4;
 
@@ -444,6 +456,9 @@
     // T2TBothAspectsThenCopyNonRenderableStencil works correctly.
     DAWN_SKIP_TEST_IF(IsMetal() && IsIntel());
 
+    // TODO(crbug.com/dawn/634): Diagnose and fix ANGLE failure.
+    DAWN_SKIP_TEST_IF(IsANGLE());
+
     wgpu::Texture texture = CreateInitializeDepthStencilTextureAndCopyT2T(
         0.1f, 0.3f, 1u, 3u, 9, 9, wgpu::TextureUsage::CopySrc, 1);
 
@@ -460,6 +475,9 @@
 
 // Test copying both aspects in a T2T copy, then copying only depth.
 TEST_P(DepthStencilCopyTests, T2TBothAspectsThenCopyDepth) {
+    // TODO(crbug.com/dawn/634): Diagnose and fix ANGLE failure.
+    DAWN_SKIP_TEST_IF(IsANGLE());
+
     constexpr uint32_t kWidth = 4;
     constexpr uint32_t kHeight = 4;
 
@@ -478,6 +496,9 @@
 
 // Test copying both aspects in a T2T copy, then copying only depth at a nonzero mip.
 TEST_P(DepthStencilCopyTests, T2TBothAspectsThenCopyNonZeroMipDepth) {
+    // TODO(crbug.com/dawn/634): Diagnose and fix ANGLE failure.
+    DAWN_SKIP_TEST_IF(IsANGLE());
+
     wgpu::Texture texture = CreateInitializeDepthStencilTextureAndCopyT2T(
         0.1f, 0.3f, 1u, 3u, 8, 8, wgpu::TextureUsage::RenderAttachment, 1);
 
@@ -493,6 +514,9 @@
 
 // Test copying both aspects in a T2T copy, then copying stencil, then copying depth
 TEST_P(DepthStencilCopyTests, T2TBothAspectsThenCopyStencilThenDepth) {
+    // TODO(crbug.com/dawn/634): Diagnose and fix ANGLE failure.
+    DAWN_SKIP_TEST_IF(IsANGLE());
+
     constexpr uint32_t kWidth = 4;
     constexpr uint32_t kHeight = 4;
 
@@ -529,6 +553,9 @@
     // T2TBothAspectsThenCopyStencilThenDepth which checks stencil first also passes.
     DAWN_SKIP_TEST_IF(IsMetal() && IsIntel());
 
+    // TODO(crbug.com/dawn/634): Diagnose and fix ANGLE failure.
+    DAWN_SKIP_TEST_IF(IsANGLE());
+
     constexpr uint32_t kWidth = 4;
     constexpr uint32_t kHeight = 4;
 
