aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rw-r--r--tools/translate-phone-lang-test.js (renamed from tools/translate-italian-test.js)28
1 files changed, 14 insertions, 14 deletions
diff --git a/tools/translate-italian-test.js b/tools/translate-phone-lang-test.js
index ab26e48..9e1eefc 100644
--- a/tools/translate-italian-test.js
+++ b/tools/translate-phone-lang-test.js
@@ -1,11 +1,11 @@
-// Translating into the phone's language: isolabellart's phone is Italian,
-// coinos has no Italian UI (so it ran in English), and posts were never
-// translated for them — the target was the app's language, and the guess
-// didn't know Italian. Now an English post is translated into Italian on an
-// Italian phone; an Italian one is left alone; Settings → Translation names
+// Translating into the phone's language when coinos has no UI in it:
+// isolabellart's phone was Italian before coinos spoke Italian, so it ran in
+// English and posts were never translated for them. Here a Dutch phone (no
+// Dutch UI): an English post is translated into Dutch (the stub answers in
+// whatever words); a Dutch one is left alone; Settings → Translation names
// the target and takes a DeepL key, which then rides with each request.
// The registrar's /translate is stubbed (window.fetch shim).
-// Run: bun tools/translate-italian-test.js
+// Run: bun tools/translate-phone-lang-test.js
import puppeteer from './puppeteer.js';
import { cacheKeyFor } from '../src/wallet.js';
import { generateSecretKey, getPublicKey, finalizeEvent } from 'nostr-tools/pure';
@@ -17,7 +17,7 @@ const AUTHOR = (() => { const sk = generateSecretKey(); return { sk, pk: getPubl
const now = Math.floor(Date.now() / 1000);
const post = (content, ago) => finalizeEvent({ kind: 1, created_at: now - ago, tags: [], content }, AUTHOR.sk);
const EN = post('I think that the market is going to be very busy today and you should come with us', 100);
-const IT = post('Penso che il mercato sarà molto affollato oggi e anche tu dovresti venire con noi per il caffè', 200);
+const IT = post('Ik denk dat de markt vandaag heel druk is en dat je ook met ons mee moet komen voor de koffie', 200);
const EN2 = post('This is another post in English that is not yet translated for you and the others', 300);
const ANSWERS = {
[EN.content]: { text: 'Penso che il mercato sarà molto affollato oggi e dovresti venire con noi', source: 'en' },
@@ -28,8 +28,8 @@ const server = Bun.serve({ port: 5317, fetch: () => new Response(html, { headers
const browser = await puppeteer.launch({ executablePath: '/usr/bin/google-chrome', headless: 'new', args: ['--no-sandbox'] });
const page = await browser.newPage();
await page.evaluateOnNewDocument((answers) => {
- Object.defineProperty(navigator, 'languages', { get: () => ['it-IT', 'it', 'en'] });
- Object.defineProperty(navigator, 'language', { get: () => 'it-IT' });
+ Object.defineProperty(navigator, 'languages', { get: () => ['nl-NL', 'nl', 'en'] });
+ Object.defineProperty(navigator, 'language', { get: () => 'nl-NL' });
window.__tr = [];
try { delete self.Translator; } catch {}
const real = window.fetch;
@@ -72,17 +72,17 @@ try {
await waitText('receive', 20000);
await page.evaluate(() => document.querySelector('.app-nav-button[aria-label="Feed"]')?.click());
- console.log('\n[an Italian phone, coinos in English]');
- check('the English post is shown in Italian', await waitText('Penso che il mercato sarà molto affollato oggi e dovresti', 15000));
+ console.log('\n[a Dutch phone, coinos in English]');
+ check('the English post is shown translated', await waitText('Penso che il mercato sarà molto affollato oggi e dovresti', 15000));
const asked = await page.evaluate(() => window.__tr);
- check('...asked of the registrar with target it', asked.some((b) => b.target === 'it' && b.text === EN.content), JSON.stringify(asked.map((b) => b.target)));
- check('the Italian post is left alone', !asked.some((b) => b.text === IT.content));
+ check('...asked of the registrar with target nl', asked.some((b) => b.target === 'nl' && b.text === EN.content), JSON.stringify(asked.map((b) => b.target)));
+ check('the Dutch post is left alone', !asked.some((b) => b.text === IT.content));
console.log('\n[Settings → Translation, with a DeepL key]');
await page.evaluate(() => { const b = [...document.querySelectorAll('button, a')].find((x) => x.getAttribute('aria-label') === 'Settings' || x.title === 'Settings'); b && b.click(); });
await sleep(800);
await click('nostr'); await sleep(1000);
- check('the card names Italian as the target', await page.evaluate(() => { const s = document.querySelector('.translate-to'); return !!s && s.value === 'it'; }));
+ check('the card names Dutch as the target', await page.evaluate(() => { const s = document.querySelector('.translate-to'); return !!s && s.value === 'nl'; }));
await page.evaluate(() => document.querySelector('.deepl-key')?.scrollIntoView());
await page.type('.deepl-key', 'abcdef01-2345-6789-abcd-ef0123456789:fx');
await page.evaluate(() => document.querySelector('.deepl-save').click());