create-appraisejs 0.1.10-alpha.2 → 0.1.10-alpha.4
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/dist/copy-template.d.ts.map +1 -1
- package/dist/copy-template.js +5 -1
- package/dist/copy-template.js.map +1 -1
- package/dist/install.d.ts +2 -2
- package/dist/install.js +2 -2
- package/dist/prepare-template-utils.d.ts.map +1 -1
- package/dist/prepare-template-utils.js +6 -5
- package/dist/prepare-template-utils.js.map +1 -1
- package/dist/scaffold-gitignore.d.ts +4 -0
- package/dist/scaffold-gitignore.d.ts.map +1 -0
- package/dist/scaffold-gitignore.js +20 -0
- package/dist/scaffold-gitignore.js.map +1 -0
- package/dist/sync-templates-utils.d.ts +2 -0
- package/dist/sync-templates-utils.d.ts.map +1 -0
- package/dist/sync-templates-utils.js +13 -0
- package/dist/sync-templates-utils.js.map +1 -0
- package/package.json +4 -2
- package/templates/default/.appraise-template-meta.json +2 -2
- package/templates/default/automation/config/environments/environments.json +1 -0
- package/templates/default/gitignore +54 -0
- package/templates/default/next-env.d.ts +6 -0
- package/templates/default/next.config.ts +1 -3
- package/templates/default/prisma/dev.db +0 -0
- package/templates/default/scripts/protect-seeded-files.ts +38 -0
- package/templates/default/src/components/devtools/providers.tsx +2 -3
- package/templates/default/automation/features/base/login.feature +0 -15
- package/templates/default/automation/locators/base/home.json +0 -3
- package/templates/default/automation/locators/base/login.json +0 -6
- package/templates/default/automation/locators/base/test.json +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"copy-template.d.ts","sourceRoot":"","sources":["../src/copy-template.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"copy-template.d.ts","sourceRoot":"","sources":["../src/copy-template.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAoElD,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,cAAc,GAAG,MAAM,EAAE,CAE/F;AAED,wBAAgB,eAAe,IAAI,MAAM,CAGxC;AAMD,wBAAsB,YAAY,CAChC,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,EACvE,oBAAoB,CAAC,EAAE,MAAM,EAC7B,cAAc,CAAC,EAAE,cAAc,GAC9B,OAAO,CAAC,IAAI,CAAC,CAgCf"}
|
package/dist/copy-template.js
CHANGED
|
@@ -4,6 +4,7 @@ import { fileURLToPath } from 'url';
|
|
|
4
4
|
import cliProgress from 'cli-progress';
|
|
5
5
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
6
6
|
const SEEDED_DB_PATH = path.join('prisma', 'dev.db');
|
|
7
|
+
const PACKAGED_GITIGNORE_PATH = 'gitignore';
|
|
7
8
|
const EXCLUDED_DIRS = new Set(['node_modules', '.next', '.git']);
|
|
8
9
|
const EXCLUDED_FILES = new Set([
|
|
9
10
|
'.env',
|
|
@@ -77,6 +78,9 @@ export function getTemplatePath() {
|
|
|
77
78
|
const packageDir = path.resolve(__dirname, '..');
|
|
78
79
|
return path.join(packageDir, 'templates', 'default');
|
|
79
80
|
}
|
|
81
|
+
function getDestinationRelativePath(relativePath) {
|
|
82
|
+
return relativePath === PACKAGED_GITIGNORE_PATH ? '.gitignore' : relativePath;
|
|
83
|
+
}
|
|
80
84
|
export async function copyTemplate(destDir, onProgress, templatePathOverride, packageManager) {
|
|
81
85
|
const templatePath = templatePathOverride ?? getTemplatePath();
|
|
82
86
|
if (!(await fs.pathExists(templatePath))) {
|
|
@@ -95,7 +99,7 @@ export async function copyTemplate(destDir, onProgress, templatePathOverride, pa
|
|
|
95
99
|
for (let i = 0; i < files.length; i++) {
|
|
96
100
|
const rel = files[i];
|
|
97
101
|
const srcFile = path.join(templatePath, rel);
|
|
98
|
-
const destFile = path.join(destDir, rel);
|
|
102
|
+
const destFile = path.join(destDir, getDestinationRelativePath(rel));
|
|
99
103
|
await fs.ensureDir(path.dirname(destFile));
|
|
100
104
|
await fs.copy(srcFile, destFile);
|
|
101
105
|
progressBar.update(i + 1, { filename: rel });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"copy-template.js","sourceRoot":"","sources":["../src/copy-template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAA;AACzB,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAA;AACnC,OAAO,WAAW,MAAM,cAAc,CAAA;AAGtC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;AAC9D,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"copy-template.js","sourceRoot":"","sources":["../src/copy-template.ts"],"names":[],"mappings":"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"}
|
package/dist/install.d.ts
CHANGED
|
@@ -14,8 +14,8 @@ export declare function getPlaywrightInstallCommand(pm: PackageManager, browsers
|
|
|
14
14
|
*/
|
|
15
15
|
export declare function patchPackageJsonScripts(targetDir: string, pm: PackageManager): Promise<void>;
|
|
16
16
|
/**
|
|
17
|
-
* Run the project's `setup` script
|
|
18
|
-
*
|
|
17
|
+
* Run the project's `setup` script and optionally install the selected
|
|
18
|
+
* Playwright browsers afterward.
|
|
19
19
|
*/
|
|
20
20
|
export declare function runSetup(targetDir: string, pm: PackageManager, browsers: PlaywrightBrowser[]): Promise<void>;
|
|
21
21
|
//# sourceMappingURL=install.d.ts.map
|
package/dist/install.js
CHANGED
|
@@ -53,8 +53,8 @@ function runCommand(targetDir, command, args) {
|
|
|
53
53
|
});
|
|
54
54
|
}
|
|
55
55
|
/**
|
|
56
|
-
* Run the project's `setup` script
|
|
57
|
-
*
|
|
56
|
+
* Run the project's `setup` script and optionally install the selected
|
|
57
|
+
* Playwright browsers afterward.
|
|
58
58
|
*/
|
|
59
59
|
export async function runSetup(targetDir, pm, browsers) {
|
|
60
60
|
const { command, args } = getInstallCommand(pm);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepare-template-utils.d.ts","sourceRoot":"","sources":["../src/prepare-template-utils.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,eAAO,MAAM,0BAA0B,+DAAgE,CAAA;AAEvG,wBAAsB,YAAY,CAChC,GAAG,EAAE,MAAM,EACX,SAAS,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,EAC7C,OAAO,SAAM,GACZ,OAAO,CAAC,MAAM,EAAE,CAAC,CAmBnB;AAED,wBAAgB,yBAAyB,CACvC,gBAAgB,EAAE,OAAO,EACzB,SAAS,EAAE,MAAM,EACjB,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,GACxC,OAAO,CAET;AAED,wBAAsB,2BAA2B,CAC/C,kBAAkB,EAAE,MAAM,EAC1B,cAAc,GAAE,OAAO,YAA2B,GACjD,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"prepare-template-utils.d.ts","sourceRoot":"","sources":["../src/prepare-template-utils.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,eAAO,MAAM,0BAA0B,+DAAgE,CAAA;AAEvG,wBAAsB,YAAY,CAChC,GAAG,EAAE,MAAM,EACX,SAAS,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,EAC7C,OAAO,SAAM,GACZ,OAAO,CAAC,MAAM,EAAE,CAAC,CAmBnB;AAED,wBAAgB,yBAAyB,CACvC,gBAAgB,EAAE,OAAO,EACzB,SAAS,EAAE,MAAM,EACjB,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,GACxC,OAAO,CAET;AAED,wBAAsB,2BAA2B,CAC/C,kBAAkB,EAAE,MAAM,EAC1B,cAAc,GAAE,OAAO,YAA2B,GACjD,OAAO,CAAC,IAAI,CAAC,CAqCf"}
|
|
@@ -23,23 +23,24 @@ export function shouldAbortOnFallbackSeed(usedFallbackSeed, inputHash, previousM
|
|
|
23
23
|
export async function verifyPreparedTemplateState(packageTemplateDir, collectFilesFn = collectFiles) {
|
|
24
24
|
const seededDbPath = path.join(packageTemplateDir, 'prisma', 'dev.db');
|
|
25
25
|
const staleNestedDbPath = path.join(packageTemplateDir, 'prisma', 'prisma', 'dev.db');
|
|
26
|
+
const packagedGitignorePath = path.join(packageTemplateDir, 'gitignore');
|
|
26
27
|
const packageEnvPath = path.join(packageTemplateDir, '.env');
|
|
27
|
-
const starterFeaturePath = path.join(packageTemplateDir, 'automation', 'features', 'base', 'login.feature');
|
|
28
28
|
const starterEnvironmentPath = path.join(packageTemplateDir, 'automation', 'config', 'environments', 'environments.json');
|
|
29
29
|
const starterLocatorMapPath = path.join(packageTemplateDir, 'automation', 'mapping', 'locator-map.json');
|
|
30
|
-
const
|
|
30
|
+
const reportsDir = path.join(packageTemplateDir, 'automation', 'reports');
|
|
31
|
+
const reportFiles = existsSync(reportsDir) ? await collectFilesFn(reportsDir) : [];
|
|
31
32
|
if (!existsSync(seededDbPath)) {
|
|
32
33
|
throw new Error(`Prepared template is missing ${seededDbPath}`);
|
|
33
34
|
}
|
|
34
35
|
if (existsSync(staleNestedDbPath)) {
|
|
35
36
|
throw new Error(`Prepared template still contains stale nested database ${staleNestedDbPath}`);
|
|
36
37
|
}
|
|
38
|
+
if (!existsSync(packagedGitignorePath)) {
|
|
39
|
+
throw new Error(`Prepared template is missing packaged gitignore ${packagedGitignorePath}`);
|
|
40
|
+
}
|
|
37
41
|
if (existsSync(packageEnvPath)) {
|
|
38
42
|
throw new Error(`Prepared template should not include ${packageEnvPath}`);
|
|
39
43
|
}
|
|
40
|
-
if (!existsSync(starterFeaturePath)) {
|
|
41
|
-
throw new Error(`Prepared template is missing starter automation feature ${starterFeaturePath}`);
|
|
42
|
-
}
|
|
43
44
|
if (!existsSync(starterEnvironmentPath)) {
|
|
44
45
|
throw new Error(`Prepared template is missing starter environments file ${starterEnvironmentPath}`);
|
|
45
46
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepare-template-utils.js","sourceRoot":"","sources":["../src/prepare-template-utils.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,UAAU,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAA;AAQ/C,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,2BAA2B,EAAE,qBAAqB,CAAU,CAAA;AAEvG,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,GAAW,EACX,SAA6C,EAC7C,OAAO,GAAG,GAAG;IAEb,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAA;IAC9D,MAAM,KAAK,GAAa,EAAE,CAAA;IAE1B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;QAC3C,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;QAEzE,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,YAAY,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;YACjE,SAAQ;QACV,CAAC;QAED,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC;YAC1C,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACtB,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,gBAAyB,EACzB,SAAiB,EACjB,gBAAyC;IAEzC,OAAO,gBAAgB,IAAI,gBAAgB,EAAE,SAAS,KAAK,SAAS,CAAA;AACtE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,kBAA0B,EAC1B,iBAAsC,YAAY;IAElD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA;IACtE,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA;IACrF,MAAM,
|
|
1
|
+
{"version":3,"file":"prepare-template-utils.js","sourceRoot":"","sources":["../src/prepare-template-utils.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,UAAU,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAA;AAQ/C,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,2BAA2B,EAAE,qBAAqB,CAAU,CAAA;AAEvG,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,GAAW,EACX,SAA6C,EAC7C,OAAO,GAAG,GAAG;IAEb,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAA;IAC9D,MAAM,KAAK,GAAa,EAAE,CAAA;IAE1B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;QAC3C,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;QAEzE,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,YAAY,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;YACjE,SAAQ;QACV,CAAC;QAED,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC;YAC1C,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACtB,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,gBAAyB,EACzB,SAAiB,EACjB,gBAAyC;IAEzC,OAAO,gBAAgB,IAAI,gBAAgB,EAAE,SAAS,KAAK,SAAS,CAAA;AACtE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,kBAA0B,EAC1B,iBAAsC,YAAY;IAElD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA;IACtE,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA;IACrF,MAAM,qBAAqB,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAA;IACxE,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAA;IAC5D,MAAM,sBAAsB,GAAG,IAAI,CAAC,IAAI,CACtC,kBAAkB,EAClB,YAAY,EACZ,QAAQ,EACR,cAAc,EACd,mBAAmB,CACpB,CAAA;IACD,MAAM,qBAAqB,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,YAAY,EAAE,SAAS,EAAE,kBAAkB,CAAC,CAAA;IACxG,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,YAAY,EAAE,SAAS,CAAC,CAAA;IACzE,MAAM,WAAW,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAElF,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,gCAAgC,YAAY,EAAE,CAAC,CAAA;IACjE,CAAC;IACD,IAAI,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,0DAA0D,iBAAiB,EAAE,CAAC,CAAA;IAChG,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,mDAAmD,qBAAqB,EAAE,CAAC,CAAA;IAC7F,CAAC;IACD,IAAI,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,wCAAwC,cAAc,EAAE,CAAC,CAAA;IAC3E,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,0DAA0D,sBAAsB,EAAE,CAAC,CAAA;IACrG,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,4CAA4C,qBAAqB,EAAE,CAAC,CAAA;IACtF,CAAC;IACD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,gEAAgE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC3G,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare const SEEDED_TEMPLATE_PATHS: readonly ["prisma/dev.db", "automation/config/environments/environments.json"];
|
|
2
|
+
export declare function setSeededTemplateFilesTracked(content: string, tracked: boolean): string;
|
|
3
|
+
export declare function getEmptyEnvironmentsFileContent(): string;
|
|
4
|
+
//# sourceMappingURL=scaffold-gitignore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scaffold-gitignore.d.ts","sourceRoot":"","sources":["../src/scaffold-gitignore.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,gFAAiF,CAAA;AAUnH,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CASvF;AAED,wBAAgB,+BAA+B,IAAI,MAAM,CAExD"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export const SEEDED_TEMPLATE_PATHS = ['prisma/dev.db', 'automation/config/environments/environments.json'];
|
|
2
|
+
function trimTrailingBlankLines(lines) {
|
|
3
|
+
const trimmed = [...lines];
|
|
4
|
+
while (trimmed.length > 0 && trimmed[trimmed.length - 1] === '') {
|
|
5
|
+
trimmed.pop();
|
|
6
|
+
}
|
|
7
|
+
return trimmed;
|
|
8
|
+
}
|
|
9
|
+
export function setSeededTemplateFilesTracked(content, tracked) {
|
|
10
|
+
const managedLines = new Set(SEEDED_TEMPLATE_PATHS.flatMap(filePath => [filePath, `!${filePath}`]));
|
|
11
|
+
const lines = trimTrailingBlankLines(content.split(/\r?\n/)).filter(line => !managedLines.has(line.trim()));
|
|
12
|
+
for (const filePath of SEEDED_TEMPLATE_PATHS) {
|
|
13
|
+
lines.push(tracked ? `!${filePath}` : filePath);
|
|
14
|
+
}
|
|
15
|
+
return `${lines.join('\n')}\n`;
|
|
16
|
+
}
|
|
17
|
+
export function getEmptyEnvironmentsFileContent() {
|
|
18
|
+
return '{}\n';
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=scaffold-gitignore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scaffold-gitignore.js","sourceRoot":"","sources":["../src/scaffold-gitignore.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,eAAe,EAAE,kDAAkD,CAAU,CAAA;AAEnH,SAAS,sBAAsB,CAAC,KAAe;IAC7C,MAAM,OAAO,GAAG,CAAC,GAAG,KAAK,CAAC,CAAA;IAC1B,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;QAChE,OAAO,CAAC,GAAG,EAAE,CAAA;IACf,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,OAAe,EAAE,OAAgB;IAC7E,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,qBAAqB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAA;IACnG,MAAM,KAAK,GAAG,sBAAsB,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IAE3G,KAAK,MAAM,QAAQ,IAAI,qBAAqB,EAAE,CAAC;QAC7C,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;IACjD,CAAC;IAED,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAA;AAChC,CAAC;AAED,MAAM,UAAU,+BAA+B;IAC7C,OAAO,MAAM,CAAA;AACf,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-templates-utils.d.ts","sourceRoot":"","sources":["../src/sync-templates-utils.ts"],"names":[],"mappings":"AAUA,wBAAgB,gCAAgC,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAG9E"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
const EXCLUDED_TEMPLATE_PATH_PREFIXES = [
|
|
2
|
+
'automation/features/',
|
|
3
|
+
'automation/locators/',
|
|
4
|
+
'automation/reports/',
|
|
5
|
+
];
|
|
6
|
+
function toPosixPath(value) {
|
|
7
|
+
return value.replace(/\\/g, '/');
|
|
8
|
+
}
|
|
9
|
+
export function shouldExcludeBundledTemplatePath(relativePath) {
|
|
10
|
+
const normalizedPath = toPosixPath(relativePath);
|
|
11
|
+
return EXCLUDED_TEMPLATE_PATH_PREFIXES.some(prefix => normalizedPath === prefix.slice(0, -1) || normalizedPath.startsWith(prefix));
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=sync-templates-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-templates-utils.js","sourceRoot":"","sources":["../src/sync-templates-utils.ts"],"names":[],"mappings":"AAAA,MAAM,+BAA+B,GAAG;IACtC,sBAAsB;IACtB,sBAAsB;IACtB,qBAAqB;CACb,CAAA;AAEV,SAAS,WAAW,CAAC,KAAa;IAChC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;AAClC,CAAC;AAED,MAAM,UAAU,gCAAgC,CAAC,YAAoB;IACnE,MAAM,cAAc,GAAG,WAAW,CAAC,YAAY,CAAC,CAAA;IAChD,OAAO,+BAA+B,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,cAAc,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAA;AACpI,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-appraisejs",
|
|
3
|
-
"version": "0.1.10-alpha.
|
|
3
|
+
"version": "0.1.10-alpha.4",
|
|
4
4
|
"description": "Scaffold a new AppraiseJS app in your directory",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "Hasnat Jamil",
|
|
@@ -33,7 +33,9 @@
|
|
|
33
33
|
},
|
|
34
34
|
"files": [
|
|
35
35
|
"dist",
|
|
36
|
-
"templates"
|
|
36
|
+
"templates",
|
|
37
|
+
"templates/default/prisma/dev.db",
|
|
38
|
+
"templates/default/automation/config/environments/environments.json"
|
|
37
39
|
],
|
|
38
40
|
"scripts": {
|
|
39
41
|
"prepublishOnly": "npm run build",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"preparedAt": "2026-03-
|
|
3
|
-
"inputHash": "
|
|
2
|
+
"preparedAt": "2026-03-11T19:51:21.589Z",
|
|
3
|
+
"inputHash": "b8bad3c969b8fcf0e41cfd1e6891ceed425ea5ac7848fef4e1e99f5498e8fb9b",
|
|
4
4
|
"databasePath": "prisma/dev.db"
|
|
5
5
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
|
|
2
|
+
|
|
3
|
+
# dependencies
|
|
4
|
+
/node_modules
|
|
5
|
+
/.pnp
|
|
6
|
+
.pnp.*
|
|
7
|
+
.yarn/*
|
|
8
|
+
!.yarn/patches
|
|
9
|
+
!.yarn/plugins
|
|
10
|
+
!.yarn/releases
|
|
11
|
+
!.yarn/versions
|
|
12
|
+
|
|
13
|
+
# testing
|
|
14
|
+
/coverage
|
|
15
|
+
|
|
16
|
+
# next.js
|
|
17
|
+
/.next/
|
|
18
|
+
/out/
|
|
19
|
+
|
|
20
|
+
# production
|
|
21
|
+
/build
|
|
22
|
+
|
|
23
|
+
# misc
|
|
24
|
+
.DS_Store
|
|
25
|
+
*.pem
|
|
26
|
+
|
|
27
|
+
# debug
|
|
28
|
+
npm-debug.log*
|
|
29
|
+
yarn-debug.log*
|
|
30
|
+
yarn-error.log*
|
|
31
|
+
.pnpm-debug.log*
|
|
32
|
+
|
|
33
|
+
# env files (can opt-in for committing if needed)
|
|
34
|
+
.env*
|
|
35
|
+
!.env.example
|
|
36
|
+
!**/.env.example
|
|
37
|
+
|
|
38
|
+
# database files
|
|
39
|
+
*.db
|
|
40
|
+
*.sqlite
|
|
41
|
+
*.sqlite3
|
|
42
|
+
!packages/create-appraisejs/templates/default/prisma/dev.db
|
|
43
|
+
|
|
44
|
+
# vercel
|
|
45
|
+
.vercel
|
|
46
|
+
|
|
47
|
+
# typescript
|
|
48
|
+
*.tsbuildinfo
|
|
49
|
+
next-env.d.ts
|
|
50
|
+
|
|
51
|
+
automation/reports/*
|
|
52
|
+
packages/cucumber-runtime/dist/*
|
|
53
|
+
!prisma/dev.db
|
|
54
|
+
!automation/config/environments/environments.json
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import type { NextConfig } from 'next'
|
|
2
2
|
|
|
3
|
-
const disableDevtools =
|
|
4
|
-
process.env.DISABLE_DEVTOOLS === '1' ||
|
|
5
|
-
process.env.DISABLE_DEVTOOLS === 'true'
|
|
3
|
+
const disableDevtools = process.env.DISABLE_DEVTOOLS === '1' || process.env.DISABLE_DEVTOOLS === 'true'
|
|
6
4
|
|
|
7
5
|
const nextConfig: NextConfig = {
|
|
8
6
|
...(disableDevtools && {
|
|
Binary file
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
#!/usr/bin/env tsx
|
|
2
|
+
|
|
3
|
+
import fs from 'fs'
|
|
4
|
+
import path from 'path'
|
|
5
|
+
|
|
6
|
+
const SEEDED_TEMPLATE_PATHS = ['prisma/dev.db', 'automation/config/environments/environments.json']
|
|
7
|
+
|
|
8
|
+
function trimTrailingBlankLines(lines: string[]): string[] {
|
|
9
|
+
const trimmed = [...lines]
|
|
10
|
+
while (trimmed.length > 0 && trimmed[trimmed.length - 1] === '') {
|
|
11
|
+
trimmed.pop()
|
|
12
|
+
}
|
|
13
|
+
return trimmed
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
function setSeededTemplateFilesTracked(content: string, tracked: boolean): string {
|
|
17
|
+
const managedLines = new Set(SEEDED_TEMPLATE_PATHS.flatMap(filePath => [filePath, `!${filePath}`]))
|
|
18
|
+
const lines = trimTrailingBlankLines(content.split(/\r?\n/)).filter(line => !managedLines.has(line.trim()))
|
|
19
|
+
|
|
20
|
+
for (const filePath of SEEDED_TEMPLATE_PATHS) {
|
|
21
|
+
lines.push(tracked ? `!${filePath}` : filePath)
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
return `${lines.join('\n')}\n`
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const gitignorePath = path.join(process.cwd(), '.gitignore')
|
|
28
|
+
const packagedGitignorePath = path.join(process.cwd(), 'gitignore')
|
|
29
|
+
const sourceGitignorePath = fs.existsSync(gitignorePath) ? gitignorePath : packagedGitignorePath
|
|
30
|
+
const currentGitignore = fs.existsSync(sourceGitignorePath) ? fs.readFileSync(sourceGitignorePath, 'utf8') : ''
|
|
31
|
+
|
|
32
|
+
fs.writeFileSync(gitignorePath, setSeededTemplateFilesTracked(currentGitignore, false))
|
|
33
|
+
|
|
34
|
+
if (sourceGitignorePath === packagedGitignorePath && fs.existsSync(packagedGitignorePath)) {
|
|
35
|
+
fs.rmSync(packagedGitignorePath, { force: true })
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
console.log('Updated .gitignore to ignore seeded local files.')
|
|
@@ -4,6 +4,7 @@ import { TanStackDevtools } from '@tanstack/react-devtools'
|
|
|
4
4
|
import { formDevtoolsPlugin } from '@tanstack/react-form-devtools'
|
|
5
5
|
|
|
6
6
|
const devtoolsEnabled =
|
|
7
|
+
process.env.NODE_ENV !== 'production' &&
|
|
7
8
|
process.env.NEXT_PUBLIC_DISABLE_DEVTOOLS !== '1' &&
|
|
8
9
|
process.env.NEXT_PUBLIC_DISABLE_DEVTOOLS !== 'true'
|
|
9
10
|
|
|
@@ -11,9 +12,7 @@ export function DevtoolsProviders({ children }: { children: React.ReactNode }) {
|
|
|
11
12
|
return (
|
|
12
13
|
<>
|
|
13
14
|
{children}
|
|
14
|
-
{devtoolsEnabled && (
|
|
15
|
-
<TanStackDevtools plugins={[formDevtoolsPlugin()]} />
|
|
16
|
-
)}
|
|
15
|
+
{devtoolsEnabled && <TanStackDevtools plugins={[formDevtoolsPlugin()]} />}
|
|
17
16
|
</>
|
|
18
17
|
)
|
|
19
18
|
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
# AUTO-GENERATED FILE - DO NOT EDIT MANUALLY
|
|
2
|
-
# This file is automatically generated from Test Suite data.
|
|
3
|
-
# Any manual changes will be overwritten when the Test Suite is updated.
|
|
4
|
-
# To modify this feature, update the corresponding Test Suite in the application.
|
|
5
|
-
|
|
6
|
-
Feature: login
|
|
7
|
-
|
|
8
|
-
@tc_7d56316baeced87a
|
|
9
|
-
Scenario: [Login] Verify user is able to login using valid credentials
|
|
10
|
-
Given the user navigates to the "https://demo-test-site-beta.vercel.app" url
|
|
11
|
-
When the user fills in the "email" input field with value "demo@example.com"
|
|
12
|
-
And the user fills in the "password" input field with value "test1234"
|
|
13
|
-
And the user clicks on the "submit" element
|
|
14
|
-
And the user waits for the route "/home" to be loaded
|
|
15
|
-
Then the element "home title" should true contain the text "Welcome to Home Page"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{}
|