+ {/* El espacio va explícito: Astro se come el que hay entre una
+ expresión y la etiqueta siguiente, y las dos líneas del
+ titular quedaban pegadas ("from" + "the NaN builders"). */}
+
{tt.titleA}{' '}{tt.titleB}
{tt.lead}
{tt.stats.map((s) => (
diff --git a/src/tests/landing/surveyData.test.ts b/src/tests/landing/surveyData.test.ts
index 09529ac..2f1689b 100644
--- a/src/tests/landing/surveyData.test.ts
+++ b/src/tests/landing/surveyData.test.ts
@@ -1,4 +1,7 @@
import { describe, expect, test } from 'vitest';
+import { readFileSync } from 'node:fs';
+import { fileURLToPath } from 'node:url';
+import { dirname, resolve } from 'node:path';
import encuesta from '../../data/encuesta.json';
import { loc, type Localized } from '../../lib/agenda';
import { useT } from '../../lib/i18n';
@@ -194,6 +197,32 @@ describe('nada de datos personales en toda la página', () => {
});
});
+describe('el titular de la portada', () => {
+ const here = dirname(fileURLToPath(import.meta.url));
+ const page = readFileSync(resolve(here, '../../pages/_survey.astro'), 'utf-8');
+ const h1 = page.slice(page.indexOf('
'), page.indexOf('
'));
+
+ /**
+ * Salió a producción con las dos mitades pegadas: "The answers from" y "the
+ * NaN builders" se leían como "fromthe". Astro se come el espacio que hay
+ * entre una expresión y la etiqueta siguiente, así que tiene que ir
+ * explícito, como en /projects.
+ */
+ test('el espacio entre las dos mitades va explícito', () => {
+ expect(h1).toContain("{' '}");
+ });
+
+ test('las dos mitades del titular existen en los dos idiomas y no traen espacios de más', () => {
+ for (const lang of LANGS) {
+ const s = useT(lang).survey;
+ for (const half of [s.titleA, s.titleB]) {
+ expect(half).toBe(half.trim());
+ expect(half).not.toBe('');
+ }
+ }
+ });
+});
+
describe('el chrome de la página está en el diccionario', () => {
test('las dos pestañas, la cabecera y el método existen en los dos idiomas', () => {
for (const lang of LANGS) {