LU07.A01 Wikipedia-Klicker (path to philosophy)

Wenn man auf dem englischsprachigen Wikipedia auf einer Zufälligen Seite immer auf den ersten Link klickt, landet man häufig nach einer Weile bei „Philosophy“.

Dieses Phänomen wurde sogar in wissenschaftlichen Arbeiten untersucht. Ebenso hat sich daraus ein Spiel entwickelt:

Manuelles Vorgehen

  1. Ersten Link im Artikel klicken (Ausgenommen: „Redirected from“, disambiguations, Referenzen und andere kursive Anmerkungen.)
  2. Seitentitel / URL merken
  3. Schritt 2 und 3 so lange wiederholen, bis man auf der Seite „Philosophy“ landet oder auf einer Seite, die man in dem Durchgang bereits aufgerufen hat (Schleife).

Nun möchten wir das mit dem Testing-Framework TestCafé automatisieren.

  1. TestCafé installieren
  2. Test implementieren
  3. Test mehrmals ausführen

Folgendes Code-Snippet dient Ihnen allenfalls als Starthilfe:

import { Selector } from 'testcafe';
 
fixture('Wikipedia Random Page Test').page('https://en.wikipedia.org/wiki/Special:Random');
 
test('Follow first Wikipedia links until Philosophy or loop', async (t) => {
  // TODO: implement!
});
 
const getTitleText = async (t) => {
  const title = Selector('#firstHeading');
  await t.expect(title.exists).ok({ timeout: 10000 });
  return await title.innerText;
};
 
const getFirstValidLink = async (t) => {
  const content = Selector('#mw-content-text');
  await t.expect(content.exists).ok({ timeout: 10000 });
 
  const firstValidLink = await content
    .find('p a')
    .filter((node) => {
      return (
        !node.closest('i') &&
        !node.closest('sup') &&
        !node.closest('.infobox') &&
        node.getAttribute('href')?.startsWith('/wiki/')
      );
    })
    .nth(0);
  await t.expect(firstValidLink.exists).ok({ timeout: 10000 });
  return firstValidLink;
};

Geben Sie auf Moodle den Begriff mit der längsten Kette ein, den Sie gefunden haben.