@cosmocoder/mcp-web-docs 2.1.9 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/build/crawler/crawlee-crawler.d.ts +13 -7
  2. package/build/crawler/crawlee-crawler.js +87 -48
  3. package/build/crawler/crawlee-crawler.js.map +1 -1
  4. package/build/crawler/crawlee-crawler.test.js +248 -85
  5. package/build/crawler/crawlee-crawler.test.js.map +1 -1
  6. package/build/crawler/docs-crawler.d.ts +3 -0
  7. package/build/crawler/docs-crawler.js +7 -0
  8. package/build/crawler/docs-crawler.js.map +1 -1
  9. package/build/crawler/docs-crawler.test.js +37 -0
  10. package/build/crawler/docs-crawler.test.js.map +1 -1
  11. package/build/crawler/login-page-signals.d.ts +6 -7
  12. package/build/crawler/login-page-signals.js +4 -16
  13. package/build/crawler/login-page-signals.js.map +1 -1
  14. package/build/crawler/login-page-signals.test.js +13 -32
  15. package/build/crawler/login-page-signals.test.js.map +1 -1
  16. package/build/index.test.js +38 -2
  17. package/build/index.test.js.map +1 -1
  18. package/build/indexing/status.d.ts +1 -7
  19. package/build/indexing/status.js +38 -3
  20. package/build/indexing/status.js.map +1 -1
  21. package/build/indexing/status.test.js +69 -0
  22. package/build/indexing/status.test.js.map +1 -1
  23. package/build/indexing/workflow.d.ts +1 -1
  24. package/build/indexing/workflow.js +26 -6
  25. package/build/indexing/workflow.js.map +1 -1
  26. package/build/indexing/workflow.test.js +52 -5
  27. package/build/indexing/workflow.test.js.map +1 -1
  28. package/build/server.js +10 -2
  29. package/build/server.js.map +1 -1
  30. package/build/server.test.js +19 -0
  31. package/build/server.test.js.map +1 -1
  32. package/build/types.d.ts +4 -0
  33. package/build/util/security.d.ts +9 -0
  34. package/build/util/security.js +29 -0
  35. package/build/util/security.js.map +1 -1
  36. package/build/util/security.test.js +21 -1
  37. package/build/util/security.test.js.map +1 -1
  38. package/package.json +4 -4
@@ -407,7 +407,8 @@ describe('CrawleeCrawler', () => {
407
407
  : false));
408
408
  return Object.assign(page, { content: vi.fn().mockResolvedValue(`<html><body>${bodyText}${html}</body></html>`) });
409
409
  }
410
- // The check only runs on a crawl that authenticated, so every case here starts from one
410
+ // Most of what the check decides turns on a session, so every case here starts from one. The cases
411
+ // that are about a crawl without one replace the crawler.
411
412
  beforeEach(() => {
412
413
  crawler.setStorageState({ cookies: [{ name: 'auth', value: 'token', domain: 'example.com', path: '/' }] });
413
414
  });
@@ -425,15 +426,44 @@ describe('CrawleeCrawler', () => {
425
426
  bodyText: `Ordinary content about topic ${n}`,
426
427
  headings: [`Topic ${n}`],
427
428
  });
428
- // One login page, whatever URL it was asked for
429
+ // The furniture of a documentation site - nav, sidebar, footer - which a login page served inside
430
+ // that shell carries too. Long enough that the page is not bare, which is a separate rule.
431
+ const SHELL_TEXT = 'Guides Reference Tutorials API Changelog Support Status Community Careers Legal Privacy Terms. '.repeat(3);
432
+ // One login page, whatever URL it was asked for. Served inside the site's own shell, so only its
433
+ // repetition gives it away - a bare wall is caught on sight instead, by loginWall below.
429
434
  const loginPage = (n) => ({
435
+ url: `https://example.com/docs/${n}`,
436
+ bodyText: `${LOGIN_BODY} ${SHELL_TEXT}`,
437
+ headings: ['Sign in'],
438
+ asksForPassword: true,
439
+ });
440
+ // Nothing but the form
441
+ const loginWall = (n) => ({
430
442
  url: `https://example.com/docs/${n}`,
431
443
  bodyText: LOGIN_BODY,
432
444
  headings: ['Sign in'],
433
445
  asksForPassword: true,
434
446
  });
435
- it('fails the crawl when the first page is a login page', async () => {
436
- await expect(crawlPages([{ url: 'https://example.com/docs', bodyText: LOGIN_BODY }])).rejects.toThrow(SessionExpiredError);
447
+ // The same wall answering a path of its own, where a test needs several walls that are not
448
+ // documentation URLs - a /login and a /signup rather than a /docs/2
449
+ const wallAt = (path) => ({ ...loginWall(0), url: `https://example.com/${path}` });
450
+ // A login page where the crawl asked for documentation fails it on sight, in whatever shape it
451
+ // arrives, and says which page that was rather than counting it as one wall among many.
452
+ it.each([
453
+ ['wording alone', { url: 'https://example.com/docs', bodyText: LOGIN_BODY }],
454
+ ['nothing but the form', { ...loginWall(1), url: 'https://example.com/docs' }],
455
+ // No wording and no password field: the markup is the only evidence, and reading the markup is
456
+ // what the crawl skips for a page showing no sign of a login
457
+ [
458
+ 'a wordless SSO shell',
459
+ {
460
+ url: 'https://example.com/docs',
461
+ bodyText: 'Redirecting',
462
+ html: '<form action="/login"><input name="username"><img alt="Continue with Okta">',
463
+ },
464
+ ],
465
+ ])('fails an authenticated crawl whose entry page is a login page by %s', async (_label, entry) => {
466
+ await expect(crawlPages([entry])).rejects.toThrow(/the page the crawl was asked for is a login page/i);
437
467
  });
438
468
  // A URL match is worth three of the detector's six indicators, so scoring the URL would make
439
469
  // every page of this host a login page and no authenticated crawl of it possible. The wording
@@ -447,26 +477,26 @@ describe('CrawleeCrawler', () => {
447
477
  await expect(crawlPages(pages, 'https://auth.example.com/docs')).resolves.toBeUndefined();
448
478
  expect(mockQueueManager.addResult).toHaveBeenCalledTimes(3);
449
479
  });
450
- // Same outcome whichever order they finish in, which "in a row" could never give
451
- it.each([
452
- ['one login page answers several URLs', [docsPage(1), loginPage(2), loginPage(3), loginPage(4)]],
453
- ['real pages are interleaved with it', [docsPage(1), loginPage(2), docsPage(3), loginPage(4), docsPage(5), loginPage(6)]],
454
- ])('fails the crawl when %s', async (_label, pages) => {
455
- await expect(crawlPages(pages)).rejects.toThrow(/one login page answered 3 different URLs/i);
456
- });
457
- // Too short for any one login page to come back three times, but they were still most of it
458
- it('fails a short crawl that was mostly one login page', async () => {
459
- await expect(crawlPages([docsPage(1), loginPage(2), loginPage(3)])).rejects.toThrow(/answered 2 of 3 URLs/i);
460
- });
461
- // Two indicators is the detector's bar but half of ours, or any page mentioning a username counts
462
- it('ignores pages that only just trip the detector', async () => {
463
- const pages = [1, 2, 3].map((n) => ({ ...loginPage(n), bodyText: 'Log in with your username.' }));
464
- await expect(crawlPages([docsPage(0), ...pages])).resolves.toBeUndefined();
480
+ // A run of walls among the pages the crawl can currently see is what a dead session looks like.
481
+ // It stops there rather than at the end, so the pages after it are never fetched.
482
+ it('stops the crawl once walls are most of what it is seeing', async () => {
483
+ await expect(crawlPages([...[1, 2, 3].map(docsPage), ...[4, 5, 6, 7, 8].map(loginWall)])).rejects.toThrow(/5 of the last 8 pages the crawl saw were login walls/i);
484
+ expect(mockQueueManager.addResult).toHaveBeenCalledTimes(3);
485
+ });
486
+ // Too short for the window to fill, but walls were still most of it
487
+ it('fails a short crawl that was mostly login walls', async () => {
488
+ await expect(crawlPages([docsPage(1), loginWall(2), loginWall(3)])).rejects.toThrow(/2 of the 3 pages the crawl saw were login walls/i);
465
489
  });
466
- // Too small a share of the crawl for the after-the-fact rule; only the repeat count catches it
490
+ // The accepted limit of the window: a session dying with only a few pages left is not caught. The
491
+ // walls are still kept out of the index, so nothing wrong is stored - those pages are just absent.
492
+ it('does not stop a long crawl whose session died in its last few pages', async () => {
493
+ await expect(crawlPages([...Array.from({ length: 10 }, (_, i) => docsPage(i + 1)), ...[11, 12, 13, 14].map(loginWall)])).resolves.toBeUndefined();
494
+ expect(mockQueueManager.addResult).toHaveBeenCalledTimes(10);
495
+ });
496
+ // Too small a share of the crawl for the after-the-fact rule; only the window catches it
467
497
  it('fails a long crawl where the session died near the end', async () => {
468
- const tail = [1, 2, 3].map((n) => ({ ...loginPage(n), url: `https://example.com/docs/late-${n}` }));
469
- await expect(crawlPages([...[1, 2, 3, 4, 5, 6, 7, 8].map(docsPage), ...tail])).rejects.toThrow(/one login page answered 3 different URLs/i);
498
+ const tail = [1, 2, 3, 4, 5].map((n) => ({ ...loginWall(n), url: `https://example.com/docs/late-${n}` }));
499
+ await expect(crawlPages([...[1, 2, 3, 4, 5, 6, 7, 8].map(docsPage), ...tail])).rejects.toThrow(/5 of the last 8 pages the crawl saw were login walls/i);
470
500
  });
471
501
  // One branded button, with the only real evidence in the markup
472
502
  it.each([
@@ -476,14 +506,23 @@ describe('CrawleeCrawler', () => {
476
506
  const pages = [1, 2, 3].map((n) => ({ url: `https://example.com/docs/${n}`, bodyText, html }));
477
507
  await expect(crawlPages([docsPage(0), ...pages])).rejects.toThrow(SessionExpiredError);
478
508
  });
479
- // One page is documentation about signing in; the rule needs a page that came back
480
- it('keeps crawling a two-page site whose second page is about signing in', async () => {
481
- await expect(crawlPages([docsPage(1), { ...loginPage(2), url: 'https://example.com/docs/auth' }])).resolves.toBeUndefined();
482
- });
483
- // Exactly half, which "most of the crawl" has to include - otherwise a session dying at the
484
- // midpoint of a short crawl passes
485
- it('fails a crawl that was exactly half one login page', async () => {
486
- await expect(crawlPages([docsPage(1), loginPage(2), docsPage(3), loginPage(4)])).rejects.toThrow(/answered 2 of 4 URLs/i);
509
+ // What a documentation site does that reads like a login page. Both clear the detector's own bar;
510
+ // what keeps them in the index is the wall rule, which needs a page with only the form on it.
511
+ it.each([
512
+ // A sign-in box in the site chrome, on every page
513
+ [
514
+ 'carry a sign-in box in an article',
515
+ [1, 2, 3].map((n) => {
516
+ const served = loginPage(n);
517
+ return { ...served, bodyText: `${served.bodyText} Topic ${n}`, headings: [`Topic ${n}`] };
518
+ }),
519
+ ],
520
+ // Bare, with a password box, but tripping only two of the detector's six indicators - short of the
521
+ // bar, and so not the crawl's business to judge. The accepted cost is a wall worded like this one.
522
+ ["trip only two of the detector's indicators", [{ ...loginWall(1), bodyText: 'Sign in Username' }]],
523
+ ])('keeps crawling documentation pages that %s', async (_label, pages) => {
524
+ await expect(crawlPages([docsPage(0), ...pages])).resolves.toBeUndefined();
525
+ expect(mockQueueManager.addResult).toHaveBeenCalledTimes(pages.length + 1);
487
526
  });
488
527
  // By arrival order, one ordinary page reading as a login page would fail the crawl on its own,
489
528
  // with none of the repetition the rule is built on
@@ -493,12 +532,6 @@ describe('CrawleeCrawler', () => {
493
532
  { url: 'https://example.com/docs', bodyText: 'Ordinary content on the page the crawl asked for' },
494
533
  ])).resolves.toBeUndefined();
495
534
  });
496
- // A login page's wording varies per request - a return parameter, a csrf token, an attempt
497
- // counter - so the identity cannot rest on it. The form it puts in front of you does not vary.
498
- it('fails the crawl when the login page varies by the text it carries', async () => {
499
- const pages = [1, 2, 3].map((n) => ({ ...loginPage(n), bodyText: `${LOGIN_BODY} next=%2Fdocs%2F${n} token=a${n}f9c${n}` }));
500
- await expect(crawlPages([docsPage(0), ...pages])).rejects.toThrow(/one login page answered 3 different URLs/i);
501
- });
502
535
  it('does not serialize the markup of a page with no sign of a login', async () => {
503
536
  const ordinary = authenticatedPage(docsPage(1));
504
537
  mockCrawlerRun.mockImplementationOnce(async () => {
@@ -508,60 +541,190 @@ describe('CrawleeCrawler', () => {
508
541
  await collect(crawler, 'https://example.com/docs');
509
542
  expect(ordinary.content).not.toHaveBeenCalled();
510
543
  });
511
- // Shape alone cannot tell pages apart, so it never counts on its own
512
- it.each([
513
- ['a theme that renders no headings', [1, 2, 3].map((n) => ({ ...docsPage(n), headings: [] }))],
514
- [
515
- 'a reference template with fixed headings',
516
- [1, 2, 3].map((n) => ({ ...docsPage(n), headings: ['Authentication', 'Request', 'Response'] })),
517
- ],
518
- ])('keeps crawling documentation pages that share %s', async (_label, pages) => {
519
- const aboutSigningIn = pages.map((page) => ({ ...page, bodyText: LOGIN_BODY }));
520
- await expect(crawlPages([docsPage(0), ...aboutSigningIn])).resolves.toBeUndefined();
521
- expect(mockQueueManager.addResult).toHaveBeenCalledTimes(4);
522
- });
523
- // A sign-in box in the page furniture. What still differs is what each page is about.
524
- it('keeps crawling a site whose every page carries a sign-in box', async () => {
525
- const pages = [1, 2, 3].map((n) => ({ ...loginPage(n), bodyText: `${LOGIN_BODY} Topic ${n}`, headings: [`Topic ${n}`] }));
526
- await expect(crawlPages([docsPage(0), ...pages])).resolves.toBeUndefined();
527
- expect(mockQueueManager.addResult).toHaveBeenCalledTimes(4);
528
- });
529
- // A sign-in box and no headings: neither half is enough to call these one page
530
- it('keeps crawling a heading-less site whose every page carries a sign-in box', async () => {
531
- const pages = [1, 2, 3].map((n) => ({
532
- ...loginPage(n),
533
- bodyText: `${LOGIN_BODY} ${'Ordinary content about topic '.repeat(8)}${n}`,
534
- headings: [],
535
- }));
536
- await expect(crawlPages([docsPage(0), ...pages])).resolves.toBeUndefined();
537
- expect(mockQueueManager.addResult).toHaveBeenCalledTimes(4);
544
+ // A first attempt that cannot read the page still records it. Left in that older position, the wall
545
+ // can sit outside every window that follows, and a run of them slips both rules.
546
+ it('moves a wall to where the crawl found it when an earlier attempt could not be read', async () => {
547
+ const unreadable = () => {
548
+ const { page } = navigationPage(wallAt('a').url, () => { }, vi.fn(async (fn) => {
549
+ if (fn === readLoginPageSignals) {
550
+ throw new Error('execution context destroyed');
551
+ }
552
+ return false;
553
+ }));
554
+ return Object.assign(page, { content: vi.fn().mockResolvedValue('') });
555
+ };
556
+ mockCrawlerRun.mockImplementationOnce(async () => {
557
+ await runRequestHandler(unreadable(), wallAt('a').url);
558
+ for (const n of [1, 2, 3, 4, 5, 6, 7]) {
559
+ await runRequestHandler(authenticatedPage(docsPage(n)), docsPage(n).url);
560
+ }
561
+ await runRequestHandler(authenticatedPage(wallAt('a')), wallAt('a').url);
562
+ for (const slug of ['b', 'c', 'd', 'e']) {
563
+ await runRequestHandler(authenticatedPage(wallAt(slug)), wallAt(slug).url);
564
+ }
565
+ return successfulRunStats;
566
+ });
567
+ await expect(collect(crawler, 'https://example.com/docs')).rejects.toThrow(/5 of the last 8 pages the crawl saw were login walls/i);
538
568
  });
539
- // The heading of a login page names where it is sending you back to
540
- it('fails the crawl when the login page heading names the URL it turned away', async () => {
541
- const pages = [1, 2, 3].map((n) => ({
542
- ...loginPage(n),
543
- headings: [`Sign in to continue to /docs/${n}`],
544
- }));
545
- await expect(crawlPages([docsPage(0), ...pages])).rejects.toThrow(/one login page answered 3 different URLs/i);
569
+ // One URL fetched twice can come back bare once and inside the shell once - a slow theme, a retry -
570
+ // and the second look must not un-learn the wall. Long enough that only the window can end it.
571
+ it('keeps a wall recorded when a later look at the same URL is not one', async () => {
572
+ const wallN = (n) => wallAt(`wall-${n}`);
573
+ mockCrawlerRun.mockImplementationOnce(async () => {
574
+ for (const n of [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) {
575
+ await runRequestHandler(authenticatedPage(docsPage(n)), docsPage(n).url);
576
+ }
577
+ for (const n of [1, 2, 3, 4]) {
578
+ await runRequestHandler(authenticatedPage(wallN(n)), wallN(n).url);
579
+ }
580
+ // The same URL again, this time rendered inside the site's shell rather than bare
581
+ await runRequestHandler(authenticatedPage({ ...loginPage(1), url: wallN(1).url }), wallN(1).url);
582
+ await runRequestHandler(authenticatedPage(wallN(5)), wallN(5).url);
583
+ return successfulRunStats;
584
+ });
585
+ await expect(collect(crawler, 'https://example.com/docs')).rejects.toThrow(/5 of the last 8 pages the crawl saw were login walls/i);
546
586
  });
547
- // At two, a site with two pages about signing in fails a crawl that is otherwise fine
548
- it('keeps crawling when one login page has only answered twice', async () => {
549
- await expect(crawlPages([...[1, 2, 3, 4, 5, 6].map(docsPage), loginPage(7), loginPage(8)])).resolves.toBeUndefined();
587
+ // The crawl retries a failed page, and the wall it retries is not a second URL
588
+ it('does not count one wall URL twice when it is handled again', async () => {
589
+ const wall = loginWall(2);
590
+ mockCrawlerRun.mockImplementationOnce(async () => {
591
+ await runRequestHandler(authenticatedPage(docsPage(1)), docsPage(1).url);
592
+ await runRequestHandler(authenticatedPage(wall), wall.url);
593
+ await runRequestHandler(authenticatedPage(wall), wall.url);
594
+ return successfulRunStats;
595
+ });
596
+ await expect(collect(crawler, 'https://example.com/docs')).resolves.toBeDefined();
597
+ });
598
+ // Two crawls on one instance: the wall the first one skipped must not be the first of two for the
599
+ // second, or a site crawled twice fails the second time for what the first one saw
600
+ it('starts each crawl from no login pages at all', async () => {
601
+ await crawlPages([docsPage(1), loginWall(2)]);
602
+ vi.mocked(logger.warn).mockClear();
603
+ await expect(crawlPages([docsPage(1), loginWall(3)])).resolves.toBeUndefined();
604
+ expect(logger.warn).toHaveBeenCalledWith(expect.stringContaining('Left 1 login page out of the index'));
605
+ });
606
+ // The page dropped from the index has to be named somewhere, or neither remedy can be applied to
607
+ // it, and it is normalized to match the key the window counts by.
608
+ it('reports the skipped URL redacted and normalized', async () => {
609
+ const wall = { ...loginWall(2), url: 'https://example.com/docs/2?token=abc123&next=%2Fdocs#top' };
610
+ await crawlPages([docsPage(1), wall]);
611
+ expect(crawler.skippedLoginPageUrls).toEqual(['https://example.com/docs/2?token=[REDACTED]&next=%2Fdocs']);
612
+ // The logger's own redaction covers fewer parameter names than this one, so logging the raw URL
613
+ // would echo what the report withheld
614
+ expect(logger.warn).toHaveBeenCalledWith(expect.stringContaining('Not indexing https://example.com/docs/2?token=[REDACTED]'));
615
+ expect(logger.warn).not.toHaveBeenCalledWith(expect.stringContaining('abc123'));
616
+ });
617
+ // The caller must not be able to reach into the crawl's own state through what it reads
618
+ it('hands out a copy of the skipped URLs', async () => {
619
+ await crawlPages([docsPage(1), loginWall(2)]);
620
+ crawler.skippedLoginPageUrls.push('https://example.com/injected');
621
+ expect(crawler.skippedLoginPageUrls).toEqual(['https://example.com/docs/2']);
622
+ });
623
+ // The links of a skipped page are still wanted: a sparse section index is exactly the page most
624
+ // likely to be mistaken for a wall, and its whole section hangs off it
625
+ it('still follows the links of a login page it left out', async () => {
626
+ await crawlPages([docsPage(1), loginWall(2), docsPage(3)]);
627
+ expect(mockQueueManager.handleQueueAndLinks).toHaveBeenCalledTimes(3);
628
+ });
629
+ // A public crawl is not failed over walls it found, so a site that gave up nothing else ends with
630
+ // nothing to index. The workflow fails the operation over that, counting the walls and naming one.
631
+ it('leaves a public site of nothing but login walls with no pages and every wall reported', async () => {
632
+ crawler = new CrawleeCrawler();
633
+ await expect(crawlPages([loginWall(1), loginWall(2)])).resolves.toBeUndefined();
634
+ expect(mockQueueManager.addResult).not.toHaveBeenCalled();
635
+ expect(crawler.skippedLoginPageUrls).toEqual(['https://example.com/docs/1', 'https://example.com/docs/2']);
550
636
  });
551
- // Nothing in its text and no password field in the page, so the markup is the only evidence -
552
- // and reading the markup is what the crawl skips for a page showing no sign of a login
553
- it('fails the crawl when the entry page is a wordless login wall', async () => {
554
- const wall = {
555
- url: 'https://example.com/docs',
556
- bodyText: 'Redirecting',
557
- html: '<form action="/login"><input name="username"><img alt="Continue with Okta"></form>',
558
- };
559
- await expect(crawlPages([wall])).rejects.toThrow(SessionExpiredError);
637
+ // Walls being half a small site is a public site with a /login and a /signup in its nav, not a dead
638
+ // session. Failing would throw away the documentation the crawl did index.
639
+ it('keeps a public site whose login pages are half of a short crawl', async () => {
640
+ crawler = new CrawleeCrawler();
641
+ await expect(crawlPages([docsPage(1), docsPage(2), wallAt('login'), wallAt('signup')])).resolves.toBeUndefined();
642
+ expect(mockQueueManager.addResult).toHaveBeenCalledTimes(2);
643
+ });
644
+ // The nav enqueues its links together, so gated areas arrive as a run - here one long enough to fill
645
+ // the window on its own, which puts what the crawl indexed outside it. The whole crawl answers.
646
+ it('keeps a public site whose gated areas arrive as a run of login walls', async () => {
647
+ crawler = new CrawleeCrawler();
648
+ const walls = ['login', 'signup', 'admin/login', 'portal/login', 'legacy/login', 'shop/login', 'crm/login', 'wiki/login'];
649
+ await expect(crawlPages([...[1, 2, 3].map(docsPage), ...walls.map(wallAt)])).resolves.toBeUndefined();
650
+ expect(mockQueueManager.addResult).toHaveBeenCalledTimes(3);
651
+ expect(crawler.skippedLoginPageUrls).toHaveLength(8);
652
+ });
653
+ // Five pages are in flight at once and a page is extracted after its links are enqueued, so a run of
654
+ // walls can finish while accepted documentation is still being extracted.
655
+ it('keeps a public crawl whose documentation is still being extracted when a run of walls arrives', async () => {
656
+ crawler = new CrawleeCrawler();
657
+ const extraction = Promise.withResolvers();
658
+ const reachedExtraction = Promise.withResolvers();
659
+ const entry = Object.assign(authenticatedPage({ url: 'https://example.com/docs', bodyText: 'Ordinary content' }), {
660
+ title: vi.fn(async () => {
661
+ reachedExtraction.resolve();
662
+ await extraction.promise;
663
+ return 'Docs';
664
+ }),
665
+ });
666
+ mockCrawlerRun.mockImplementationOnce(async () => {
667
+ const inFlight = runRequestHandler(entry, 'https://example.com/docs');
668
+ await reachedExtraction.promise;
669
+ for (const path of ['login', 'signup', 'admin/login', 'portal/login', 'legacy/login']) {
670
+ await runRequestHandler(authenticatedPage(wallAt(path)), `https://example.com/${path}`);
671
+ }
672
+ extraction.resolve();
673
+ await inFlight;
674
+ return successfulRunStats;
675
+ });
676
+ await expect(collect(crawler, 'https://example.com/docs')).resolves.toBeDefined();
677
+ expect(mockQueueManager.addResult).toHaveBeenCalledTimes(1);
678
+ expect(crawler.skippedLoginPageUrls).toHaveLength(5);
679
+ });
680
+ // A session that died is a different matter: the pages before it are stale, so the crawl fails even
681
+ // though it indexed some. Exactly half has to count, or a session dying at the midpoint of a short
682
+ // crawl passes. Interleaved, because where the walls fall makes no difference to this rule.
683
+ it('stops an authenticated crawl whose login walls are half of it', async () => {
684
+ await expect(crawlPages([docsPage(1), wallAt('a'), docsPage(2), wallAt('b')])).rejects.toThrow(/Authentication session expired during the crawl - 2 of the 4 pages the crawl saw were login walls/i);
560
685
  });
561
- // The beforeEach above authenticated, and this crawl must not have
562
- it('does not check for login pages when the crawl never authenticated', async () => {
686
+ it('crawls an ordinary public site that was never authenticated', async () => {
563
687
  crawler = new CrawleeCrawler();
564
- await expect(crawlPages([loginPage(1), loginPage(2), loginPage(3)])).resolves.toBeUndefined();
688
+ await expect(crawlPages([1, 2, 3].map(docsPage))).resolves.toBeUndefined();
689
+ expect(mockQueueManager.addResult).toHaveBeenCalledTimes(3);
690
+ });
691
+ // Asking to index a site that turns out to need signing in - the likeliest way this is met, and
692
+ // the entry page is caught without a password field of its own
693
+ it('stops an unauthenticated crawl whose entry page is a login wall', async () => {
694
+ crawler = new CrawleeCrawler();
695
+ await expect(crawlPages([{ ...loginWall(1), url: 'https://example.com/docs' }])).rejects.toThrow(/This site requires authentication - the page the crawl was asked for is a login page/i);
696
+ });
697
+ // A public article about building login forms scores as a login page: a code sample containing
698
+ // type="password" is worth two of the detector's six indicators.
699
+ it('crawls a public site whose entry page documents authentication', async () => {
700
+ crawler = new CrawleeCrawler();
701
+ const article = {
702
+ url: 'https://example.com/docs',
703
+ bodyText: `Building a sign in form. ${'Explaining each field of the form at length. '.repeat(8)}`,
704
+ html: '<pre>&lt;input type="password" name="password"&gt;</pre>',
705
+ };
706
+ await expect(crawlPages([article, docsPage(2)])).resolves.toBeUndefined();
707
+ expect(mockQueueManager.addResult).toHaveBeenCalledTimes(2);
708
+ });
709
+ // A public site's own /login is a wall, and a crawl without a pathPrefix reaches it from the nav.
710
+ // Leaving it out of the index is the whole fix; stopping the crawl over it costs far more.
711
+ it('leaves a single login wall out of the index and keeps crawling', async () => {
712
+ await expect(crawlPages([docsPage(1), loginWall(2), docsPage(3)])).resolves.toBeUndefined();
713
+ expect(mockQueueManager.addResult).toHaveBeenCalledTimes(2);
714
+ });
715
+ // A wall reached by redirect answers a URL that is not its own, and each of those is a page the
716
+ // crawl lost. Counting the page's own address instead would make any number of them one page.
717
+ it("counts every URL a wall was served for, not the wall's own address", async () => {
718
+ mockCrawlerRun.mockImplementationOnce(async () => {
719
+ for (const n of [1, 2, 3]) {
720
+ await runRequestHandler(authenticatedPage(docsPage(n)), docsPage(n).url);
721
+ }
722
+ for (const n of [4, 5, 6, 7, 8]) {
723
+ await runRequestHandler(authenticatedPage(wallAt('login')), `https://example.com/docs/${n}`);
724
+ }
725
+ return successfulRunStats;
726
+ });
727
+ await expect(collect(crawler, 'https://example.com/docs')).rejects.toThrow(/were login walls/i);
565
728
  });
566
729
  });
567
730
  describe('authentication', () => {
@@ -1 +1 @@
1
- {"version":3,"file":"crawlee-crawler.test.js","sourceRoot":"","sources":["../../src/crawler/crawlee-crawler.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"crawlee-crawler.test.js","sourceRoot":"","sources":["../../src/crawler/crawlee-crawler.test.ts"],"names":[],"mappings":"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"}
@@ -20,6 +20,9 @@ export declare class DocsCrawler {
20
20
  private failedPages;
21
21
  /** Pages lost to a tolerated partial crawl. Only meaningful once crawl() has finished. */
22
22
  get failedPageCount(): number;
23
+ private skippedLoginUrls;
24
+ /** Login walls left out of the index. Only meaningful once crawl() has finished. */
25
+ get skippedLoginPageUrls(): string[];
23
26
  setStorageState(state: ValidatedStorageState): void;
24
27
  crawl(url: string): AsyncGenerator<CrawlResult, void, unknown>;
25
28
  abort(): void;
@@ -29,6 +29,11 @@ export class DocsCrawler {
29
29
  get failedPageCount() {
30
30
  return this.failedPages;
31
31
  }
32
+ skippedLoginUrls = [];
33
+ /** Login walls left out of the index. Only meaningful once crawl() has finished. */
34
+ get skippedLoginPageUrls() {
35
+ return [...this.skippedLoginUrls];
36
+ }
32
37
  setStorageState(state) {
33
38
  this.storageState = state;
34
39
  logger.info(`[DocsCrawler] Set storage state with ${state.cookies?.length || 0} cookies`);
@@ -37,6 +42,7 @@ export class DocsCrawler {
37
42
  const startUrl = new URL(url);
38
43
  logger.debug(`[DocsCrawler] Starting crawl of ${startUrl}`);
39
44
  this.failedPages = 0;
45
+ this.skippedLoginUrls = [];
40
46
  if (this.isAborting) {
41
47
  logger.debug('[DocsCrawler] Crawl aborted');
42
48
  return;
@@ -100,6 +106,7 @@ export class DocsCrawler {
100
106
  }
101
107
  finally {
102
108
  this.failedPages = crawleeCrawler.failedPageCount;
109
+ this.skippedLoginUrls = crawleeCrawler.skippedLoginPageUrls;
103
110
  if (this.activeCrawler === crawleeCrawler) {
104
111
  this.activeCrawler = undefined;
105
112
  }