fix(navegacao): foco em âncora de outra página, vitrine acessível e 3D mais leve
Foco cai no destino ao chegar de outra página; âncoras ignoram ?tipo=; movimento reduzido salta em todos os cliques; cronômetro da janela ampliada; degradê no topo de Projetos e legendas do mergulho com intervalos testados; vitrine acima da barra de cookies e com 2 paradas por projeto; reel-list.css no global; 3D montado em tarefas curtas, limitado a ~30 qps e estático com WebGL por software; pôsteres da vitrine de 330 para 158 KB; SC Plus regravado; scripts sem funções acima de complexidade 10.
This commit is contained in:
1 parent
9e2d65a926
commit
204ebd5fa5
49 files changed
+2197
-606
No files matched your search
@@ -3,6 +3,8 @@ import {
|
||||
isLowPowerDevice,
|
||||
isMobileViewport,
|
||||
isSaveData,
|
||||
isSoftwareRenderer,
|
||||
isSoftwareWebGL,
|
||||
MOBILE_QUERY,
|
||||
} from "./device";
|
||||
|
||||
@@ -72,3 +74,51 @@ describe("device hints", () => {
|
||||
expect(isLowPowerDevice()).toBe(false);
|
||||
});
|
||||
});
|
||||
|
||||
describe("software WebGL", () => {
|
||||
it.each([
|
||||
"ANGLE (Google, Vulkan 1.3.0 (SwiftShader Device (Subzero) (0x0000C0DE)), SwiftShader driver)",
|
||||
"llvmpipe (LLVM 15.0.7, 256 bits)",
|
||||
"ANGLE (Microsoft, Microsoft Basic Render Driver (0x0000008C) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
||||
"SWIFTSHADER",
|
||||
])("recognizes the software renderer %s", (name) => {
|
||||
expect(isSoftwareRenderer(name)).toBe(true);
|
||||
});
|
||||
|
||||
it.each([
|
||||
"ANGLE (NVIDIA, NVIDIA GeForce RTX 3060 (0x00002504) Direct3D11 vs_5_0 ps_5_0, D3D11)",
|
||||
"ANGLE (Apple, ANGLE Metal Renderer: Apple M2, Unspecified Version)",
|
||||
"Mesa Intel(R) UHD Graphics 620 (KBL GT2)",
|
||||
"",
|
||||
])("does not mistake the GPU %s for software", (name) => {
|
||||
expect(isSoftwareRenderer(name)).toBe(false);
|
||||
});
|
||||
|
||||
/** Um contexto WebGL de mentira: a extensão de depuração e o nome do renderizador. */
|
||||
function context(renderer: unknown, hasExtension = true) {
|
||||
return {
|
||||
getExtension: jest.fn((name: string) =>
|
||||
hasExtension && name === "WEBGL_debug_renderer_info"
|
||||
? { UNMASKED_RENDERER_WEBGL: 37446 }
|
||||
: null,
|
||||
),
|
||||
getParameter: jest.fn((parameter: number) =>
|
||||
parameter === 37446 ? renderer : null,
|
||||
),
|
||||
} as unknown as WebGL2RenderingContext;
|
||||
}
|
||||
|
||||
it("reads the unmasked renderer through WEBGL_debug_renderer_info", () => {
|
||||
expect(isSoftwareWebGL(context("llvmpipe (LLVM 15.0.7, 256 bits)"))).toBe(
|
||||
true,
|
||||
);
|
||||
expect(isSoftwareWebGL(context("ANGLE (NVIDIA GeForce RTX 3060)"))).toBe(
|
||||
false,
|
||||
);
|
||||
});
|
||||
|
||||
it("does not count against a browser that hides the extension or returns no name", () => {
|
||||
expect(isSoftwareWebGL(context("llvmpipe", false))).toBe(false);
|
||||
expect(isSoftwareWebGL(context(null))).toBe(false);
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user