@rm-industries/create-forge 1.0.2 → 1.0.3
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.
- package/README.md +23 -6
- package/dist/index.mjs +105 -27
- package/dist/index.mjs.map +1 -1
- package/dist/template/.github/actions/setup-project/action.yml +6 -1
- package/dist/template/.github/dependabot.yml +1 -1
- package/dist/template/.github/workflows/automation.yml +0 -20
- package/dist/template/.github/workflows/project.yml +213 -33
- package/dist/template/.github/workflows/security.yml +7 -0
- package/dist/template/README.md +30 -33
- package/dist/template/docs/github-pages.md +4 -2
- package/dist/template/docs/guides/quality-and-troubleshooting.md +13 -7
- package/dist/template/package-lock.json +783 -848
- package/dist/template/package.json +15 -14
- package/dist/template/playwright.config.ts +2 -1
- package/dist/template/playwright.smoke.config.ts +17 -0
- package/dist/template/tests/smoke/deployment.spec.ts +26 -0
- package/package.json +2 -2
|
@@ -22,27 +22,28 @@
|
|
|
22
22
|
"lint:markdown": "markdownlint \"**/*.md\" --ignore-path .gitignore",
|
|
23
23
|
"lint:markdown:fix": "markdownlint --fix \"**/*.md\" --ignore-path .gitignore",
|
|
24
24
|
"lighthouse:autorun": "lhci autorun",
|
|
25
|
-
"lighthouse:ci": "
|
|
25
|
+
"lighthouse:ci": "node scripts/run-lighthouse.ts",
|
|
26
26
|
"spellcheck": "cspell \"**\"",
|
|
27
|
-
"typecheck": "astro
|
|
27
|
+
"typecheck": "astro check",
|
|
28
28
|
"test": "npm run test:unit",
|
|
29
29
|
"test:a11y": "playwright test tests/accessibility.spec.ts",
|
|
30
30
|
"test:coverage": "vitest run --coverage",
|
|
31
31
|
"test:e2e": "playwright test",
|
|
32
|
+
"test:smoke": "playwright test --config playwright.smoke.config.ts",
|
|
32
33
|
"test:unit": "vitest run",
|
|
33
34
|
"quality": "npm run quality:core && npm run test:e2e && npm run lighthouse:ci",
|
|
34
35
|
"quality:core": "npm run quality:static && npm run test:coverage && npm run build && npm run validate:build",
|
|
35
|
-
"quality:static": "npm run format && npm run lint && npm run audit:unused && npm run typecheck
|
|
36
|
-
"quality:static:ci": "npm run lint:code && npm run lint:css && npm run lint:markdown && npm run audit:unused && npm run typecheck
|
|
36
|
+
"quality:static": "npm run format && npm run lint && npm run audit:unused && npm run typecheck",
|
|
37
|
+
"quality:static:ci": "npm run lint:code && npm run lint:css && npm run lint:markdown && npm run audit:unused && npm run typecheck"
|
|
37
38
|
},
|
|
38
39
|
"dependencies": {
|
|
39
40
|
"@astrojs/rss": "^4.0.19",
|
|
40
41
|
"@astrojs/sitemap": "^3.7.4",
|
|
41
42
|
"@fontsource/fira-code": "^5.3.0",
|
|
42
43
|
"@fontsource/fira-sans": "^5.3.0",
|
|
43
|
-
"@rm-industries/content-model": "1.1.
|
|
44
|
-
"@sveltia/cms": "0.
|
|
45
|
-
"astro": "^7.3.
|
|
44
|
+
"@rm-industries/content-model": "1.1.5",
|
|
45
|
+
"@sveltia/cms": "0.228.0",
|
|
46
|
+
"astro": "^7.3.5"
|
|
46
47
|
},
|
|
47
48
|
"devDependencies": {
|
|
48
49
|
"@astrojs/check": "^0.9.10",
|
|
@@ -53,19 +54,19 @@
|
|
|
53
54
|
"@playwright/test": "^1.63.0",
|
|
54
55
|
"@tailwindcss/typography": "^0.5.20",
|
|
55
56
|
"@tailwindcss/vite": "^4.3.3",
|
|
56
|
-
"@vitest/coverage-v8": "^
|
|
57
|
+
"@vitest/coverage-v8": "^5.0.3",
|
|
57
58
|
"audit-ci": "7.1.0",
|
|
58
|
-
"cspell": "^10.3.
|
|
59
|
-
"daisyui": "^5.7.
|
|
60
|
-
"knip": "^6.
|
|
59
|
+
"cspell": "^10.3.6",
|
|
60
|
+
"daisyui": "^5.7.47",
|
|
61
|
+
"knip": "^6.38.0",
|
|
61
62
|
"markdownlint-cli": "^0.49.0",
|
|
62
|
-
"oxfmt": "^0.
|
|
63
|
-
"oxlint": "^1.
|
|
63
|
+
"oxfmt": "^0.70.0",
|
|
64
|
+
"oxlint": "^1.85.0",
|
|
64
65
|
"stylelint": "^17.15.0",
|
|
65
66
|
"stylelint-config-standard": "^40.0.0",
|
|
66
67
|
"tailwindcss": "^4.3.3",
|
|
67
68
|
"typescript": "^6.0.3",
|
|
68
|
-
"vitest": "^
|
|
69
|
+
"vitest": "^5.0.0"
|
|
69
70
|
},
|
|
70
71
|
"engines": {
|
|
71
72
|
"node": "^22.22.2 || ^24.0.0 || ^26.0.0",
|
|
@@ -4,6 +4,7 @@ import { previewOrigin, resolvePreviewUrl } from './tests/preview';
|
|
|
4
4
|
|
|
5
5
|
export default defineConfig({
|
|
6
6
|
testDir: './tests',
|
|
7
|
+
testIgnore: '**/smoke/**',
|
|
7
8
|
outputDir: 'test-results',
|
|
8
9
|
fullyParallel: true,
|
|
9
10
|
forbidOnly: Boolean(process.env.CI),
|
|
@@ -29,7 +30,7 @@ export default defineConfig({
|
|
|
29
30
|
},
|
|
30
31
|
],
|
|
31
32
|
webServer: {
|
|
32
|
-
command: 'npm run
|
|
33
|
+
command: 'npm run preview -- --host 127.0.0.1',
|
|
33
34
|
env: {
|
|
34
35
|
...process.env,
|
|
35
36
|
ASTRO_PREVIEW_BACKGROUND: '0',
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { defineConfig, devices } from '@playwright/test';
|
|
2
|
+
|
|
3
|
+
const deploymentUrl = process.env.DEPLOYMENT_URL ?? 'https://deployment.invalid/';
|
|
4
|
+
|
|
5
|
+
export default defineConfig({
|
|
6
|
+
testDir: './tests/smoke',
|
|
7
|
+
outputDir: 'test-results/smoke',
|
|
8
|
+
forbidOnly: true,
|
|
9
|
+
retries: 2,
|
|
10
|
+
reporter: process.env.CI ? [['github'], ['html', { open: 'never' }]] : 'list',
|
|
11
|
+
use: {
|
|
12
|
+
...devices['Desktop Chrome'],
|
|
13
|
+
baseURL: deploymentUrl,
|
|
14
|
+
screenshot: 'only-on-failure',
|
|
15
|
+
trace: 'retain-on-failure',
|
|
16
|
+
},
|
|
17
|
+
});
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { expect, test } from '@playwright/test';
|
|
2
|
+
|
|
3
|
+
test('serves the deployed site, its assets, and a mobile-safe layout', async ({ page, request }) => {
|
|
4
|
+
expect(process.env.DEPLOYMENT_URL).toMatch(/^https:\/\//u);
|
|
5
|
+
await page.setViewportSize({ width: 390, height: 844 });
|
|
6
|
+
const response = await page.goto('');
|
|
7
|
+
|
|
8
|
+
expect(response?.ok()).toBe(true);
|
|
9
|
+
await expect(page.locator('meta[name="generator"]')).toHaveAttribute('content', 'Forge by RM Industries');
|
|
10
|
+
await expect(page.getByRole('heading', { level: 1 })).toBeVisible();
|
|
11
|
+
|
|
12
|
+
const assetUrls = await page
|
|
13
|
+
.locator('link[rel="stylesheet"][href], script[src]')
|
|
14
|
+
.evaluateAll((elements) =>
|
|
15
|
+
elements.map((element) =>
|
|
16
|
+
element instanceof HTMLLinkElement ? element.href : (element as HTMLScriptElement).src,
|
|
17
|
+
),
|
|
18
|
+
);
|
|
19
|
+
expect(assetUrls.length).toBeGreaterThan(0);
|
|
20
|
+
for (const assetUrl of assetUrls) expect((await request.get(assetUrl)).ok()).toBe(true);
|
|
21
|
+
|
|
22
|
+
const hasHorizontalOverflow = await page.evaluate(
|
|
23
|
+
() => document.documentElement.scrollWidth > document.documentElement.clientWidth,
|
|
24
|
+
);
|
|
25
|
+
expect(hasHorizontalOverflow).toBe(false);
|
|
26
|
+
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rm-industries/create-forge",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"description": "Scaffold accessible, content-driven Astro websites with Sveltia CMS and production-ready tooling",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"accessibility",
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"verify:package": "npm run build && node scripts/verify-package.ts"
|
|
50
50
|
},
|
|
51
51
|
"dependencies": {
|
|
52
|
-
"@clack/prompts": "^1.
|
|
52
|
+
"@clack/prompts": "^1.8.1",
|
|
53
53
|
"commander": "^15.0.0",
|
|
54
54
|
"validate-npm-package-name": "^8.0.0"
|
|
55
55
|
},
|