1
- jest . setTimeout ( 15000 )
1
+ jest . setTimeout ( 30000 )
2
2
3
3
const path = require ( 'path' )
4
4
const portfinder = require ( 'portfinder' )
@@ -8,6 +8,7 @@ const create = require('@vue/cli-test-utils/createTestProject')
8
8
const launchPuppeteer = require ( '@vue/cli-test-utils/launchPuppeteer' )
9
9
10
10
let server , browser , page
11
+
11
12
test ( 'build as wc' , async ( ) => {
12
13
const project = await create ( 'build-wc' , defaultPreset )
13
14
@@ -53,6 +54,41 @@ test('build as wc', async () => {
53
54
expect ( h3Text ) . toMatch ( 'Installed CLI Plugins' )
54
55
} )
55
56
57
+ test ( 'build as single wc' , async ( ) => {
58
+ const project = await create ( 'build-single-wc' , defaultPreset )
59
+
60
+ const { stdout } = await project . run ( `vue-cli-service build --target wc --name single-wc` )
61
+ expect ( stdout ) . toMatch ( 'Build complete.' )
62
+
63
+ expect ( project . has ( 'dist/demo.html' ) ) . toBe ( true )
64
+ expect ( project . has ( 'dist/single-wc.js' ) ) . toBe ( true )
65
+ expect ( project . has ( 'dist/single-wc.min.js' ) ) . toBe ( true )
66
+
67
+ const port = await portfinder . getPortPromise ( )
68
+ server = createServer ( { root : path . join ( project . dir , 'dist' ) } )
69
+
70
+ await new Promise ( ( resolve , reject ) => {
71
+ server . listen ( port , err => {
72
+ if ( err ) return reject ( err )
73
+ resolve ( )
74
+ } )
75
+ } )
76
+
77
+ const launched = await launchPuppeteer ( `http://localhost:${ port } /demo.html` )
78
+ browser = launched . browser
79
+ page = launched . page
80
+
81
+ const styleCount = await page . evaluate ( ( ) => {
82
+ return document . querySelector ( 'single-wc' ) . shadowRoot . querySelectorAll ( 'style' ) . length
83
+ } )
84
+ expect ( styleCount ) . toBe ( 2 ) // should contain styles from both app and child
85
+
86
+ const h1Text = await page . evaluate ( ( ) => {
87
+ return document . querySelector ( 'single-wc' ) . shadowRoot . querySelector ( 'h1' ) . textContent
88
+ } )
89
+ expect ( h1Text ) . toMatch ( 'Welcome to Your Vue.js App' )
90
+ } )
91
+
56
92
afterAll ( async ( ) => {
57
93
await browser . close ( )
58
94
server . close ( )
0 commit comments