website

#astro#js#html#css

git clone https://git.pyrossh.dev/website

木 Personal website of pyrossh. Built with astrojs, shiki, vite.


032ace7 — pyrossh 2024-05-03T22:30:46+05:30
improve sitemap

Generated files not shown: package-lock.json

package.json CHANGED
@@ -13,8 +13,7 @@
13
13
  "lint": "prettier --check . && eslint .",
14
14
  "format": "prettier --write .",
15
15
  "test:integration": "playwright test",
16
- "test:unit": "vitest",
16
+ "test:unit": "vitest"
17
- "postbuild": "npx svelte-sitemap --domain https://pyrossh.dev --ignore '**404**'"
18
17
  },
19
18
  "dependencies": {
20
19
  "@sentry/sveltekit": "^7.102.0",
@@ -37,9 +36,9 @@
37
36
  "mdsvex": "^0.11.0",
38
37
  "prettier": "^3.1.1",
39
38
  "prettier-plugin-svelte": "^3.1.2",
39
+ "super-sitemap": "^0.14.14",
40
40
  "svelte": "4.2.11",
41
41
  "svelte-check": "^3.6.0",
42
- "svelte-sitemap": "^2.6.0",
43
42
  "typescript": "^5.0.0",
44
43
  "unocss": "^0.58.5",
45
44
  "vite": "^5.0.3",
src/routes/sitemap.xml/+server.js ADDED
@@ -0,0 +1,15 @@
1
+ import * as sitemap from 'super-sitemap';
2
+
3
+ export const prerender = true;
4
+
5
+ export async function GET() {
6
+ return await sitemap.response({
7
+ origin: 'https://pyrossh.dev',
8
+ paramValues: {
9
+ '/posts/[slug]': [
10
+ 'eyecandy-golang-error-reporting',
11
+ 'gopibot-to-the-rescue',
12
+ ]
13
+ }
14
+ });
15
+ };
static/robots.txt CHANGED
@@ -0,0 +1,4 @@
1
+ User-agent: *
2
+ Allow: /
3
+
4
+ Sitemap: https://pyrossh.dev/sitemap.xml
tests/sitemap.test.js ADDED
@@ -0,0 +1,27 @@
1
+ import { expect, test } from '@playwright/test';
2
+
3
+ test('/sitemap.xml is valid', async ({ page }) => {
4
+ const response = await page.goto('/sitemap.xml');
5
+ expect(response.status()).toBe(200);
6
+
7
+ // Ensure XML is valid. Playwright parses the XML here and will error if it
8
+ // cannot be parsed.
9
+ const urls = await page.$$eval('url', (urls) =>
10
+ urls.map((url) => ({
11
+ loc: url.querySelector('loc').textContent,
12
+ // changefreq: url.querySelector('changefreq').textContent, // if you enabled in your sitemap
13
+ // priority: url.querySelector('priority').textContent,
14
+ }))
15
+ );
16
+
17
+ // Sanity check
18
+ expect(urls.length).toBeGreaterThanOrEqual(5);
19
+
20
+ // Ensure entries are in a valid format.
21
+ for (const url of urls) {
22
+ expect(url.loc).toBeTruthy();
23
+ expect(() => new URL(url.loc)).not.toThrow();
24
+ // expect(url.changefreq).toBe('daily');
25
+ // expect(url.priority).toBe('0.7');
26
+ }
27
+ });
tests/test.js CHANGED
@@ -2,5 +2,5 @@ import { expect, test } from '@playwright/test';
2
2
 
3
3
  test('index page has expected h1', async ({ page }) => {
4
4
  await page.goto('/');
5
- await expect(page.getByRole('heading', { name: 'Welcome to SvelteKit' })).toBeVisible();
5
+ await expect(page.getByRole('heading', { name: 'pyrossh' })).toBeVisible();
6
6
  });