feat(ct): https (#19697)

This commit is contained in:
Sander 2022-12-29 02:04:23 +01:00 committed by GitHub
parent 5cdf118a42
commit b363902e1b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 59 additions and 5 deletions

20
package-lock.json generated
View file

@ -31,6 +31,7 @@
"@types/xml2js": "^0.4.9", "@types/xml2js": "^0.4.9",
"@typescript-eslint/eslint-plugin": "^5.10.2", "@typescript-eslint/eslint-plugin": "^5.10.2",
"@typescript-eslint/parser": "^5.10.2", "@typescript-eslint/parser": "^5.10.2",
"@vitejs/plugin-basic-ssl": "^1.0.1",
"@vitejs/plugin-react": "^3.0.0", "@vitejs/plugin-react": "^3.0.0",
"@zip.js/zip.js": "^2.4.2", "@zip.js/zip.js": "^2.4.2",
"ansi-to-html": "^0.7.2", "ansi-to-html": "^0.7.2",
@ -1677,6 +1678,18 @@
"url": "https://opencollective.com/typescript-eslint" "url": "https://opencollective.com/typescript-eslint"
} }
}, },
"node_modules/@vitejs/plugin-basic-ssl": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-1.0.1.tgz",
"integrity": "sha512-pcub+YbFtFhaGRTo1832FQHQSHvMrlb43974e2eS8EKleR3p1cDdkJFPci1UhwkEf1J9Bz+wKBSzqpKp7nNj2A==",
"dev": true,
"engines": {
"node": ">=14.6.0"
},
"peerDependencies": {
"vite": "^3.0.0 || ^4.0.0"
}
},
"node_modules/@vitejs/plugin-react": { "node_modules/@vitejs/plugin-react": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-3.0.0.tgz", "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-3.0.0.tgz",
@ -7142,6 +7155,13 @@
"eslint-visitor-keys": "^3.0.0" "eslint-visitor-keys": "^3.0.0"
} }
}, },
"@vitejs/plugin-basic-ssl": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-1.0.1.tgz",
"integrity": "sha512-pcub+YbFtFhaGRTo1832FQHQSHvMrlb43974e2eS8EKleR3p1cDdkJFPci1UhwkEf1J9Bz+wKBSzqpKp7nNj2A==",
"dev": true,
"requires": {}
},
"@vitejs/plugin-react": { "@vitejs/plugin-react": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-3.0.0.tgz", "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-3.0.0.tgz",

View file

@ -66,6 +66,7 @@
"@types/xml2js": "^0.4.9", "@types/xml2js": "^0.4.9",
"@typescript-eslint/eslint-plugin": "^5.10.2", "@typescript-eslint/eslint-plugin": "^5.10.2",
"@typescript-eslint/parser": "^5.10.2", "@typescript-eslint/parser": "^5.10.2",
"@vitejs/plugin-basic-ssl": "^1.0.1",
"@vitejs/plugin-react": "^3.0.0", "@vitejs/plugin-react": "^3.0.0",
"@zip.js/zip.js": "^2.4.2", "@zip.js/zip.js": "^2.4.2",
"ansi-to-html": "^0.7.2", "ansi-to-html": "^0.7.2",

View file

@ -94,7 +94,7 @@ export function createPlugin(
const sourcesDirty = !buildExists || hasNewComponents || await checkSources(buildInfo); const sourcesDirty = !buildExists || hasNewComponents || await checkSources(buildInfo);
viteConfig.root = rootDir; viteConfig.root = rootDir;
viteConfig.preview = { port }; viteConfig.preview = { port, ...viteConfig.preview };
viteConfig.build = { viteConfig.build = {
outDir outDir
}; };
@ -152,9 +152,10 @@ export function createPlugin(
stoppableServer = stoppable(previewServer.httpServer, 0); stoppableServer = stoppable(previewServer.httpServer, 0);
const isAddressInfo = (x: any): x is AddressInfo => x?.address; const isAddressInfo = (x: any): x is AddressInfo => x?.address;
const address = previewServer.httpServer.address(); const address = previewServer.httpServer.address();
if (isAddressInfo(address)) if (isAddressInfo(address)) {
process.env.PLAYWRIGHT_TEST_BASE_URL = `http://localhost:${address.port}`; const protocol = viteConfig.preview.https ? 'https:' : 'http:';
process.env.PLAYWRIGHT_TEST_BASE_URL = `${protocol}//localhost:${address.port}`;
}
}, },
teardown: async () => { teardown: async () => {

View file

@ -296,4 +296,36 @@ test('should not use global config for preview', async ({ runInlineTest }) => {
const result2 = await runInlineTest({}, { workers: 1 }); const result2 = await runInlineTest({}, { workers: 1 });
expect(result2.exitCode).toBe(0); expect(result2.exitCode).toBe(0);
expect(result2.passed).toBe(1); expect(result2.passed).toBe(1);
}); });
test('should work with https enabled', async ({ runInlineTest }) => {
const result = await runInlineTest({
'playwright/index.html': `<script type="module" src="./index.js"></script>`,
'playwright/index.js': `//@no-header`,
'playwright.config.js': `
//@no-header
import basicSsl from '@vitejs/plugin-basic-ssl';
export default {
use: {
ignoreHTTPSErrors: true,
ctViteConfig: {
plugins: [basicSsl()],
preview: {
https: true
}
}
},
};
`,
'http.test.tsx': `
//@no-header
import { test, expect } from '@playwright/experimental-ct-react';
test('pass', async ({ page }) => {
await expect(page).toHaveURL(/https:.*/);
});
`,
}, { workers: 1 });
expect(result.exitCode).toBe(0);
expect(result.passed).toBe(1);
});