6.0.2 • Published 1 month ago

@stylable/core-test-kit v6.0.2

Weekly downloads
93
License
MIT
Repository
github
Last release
1 month ago

@stylable/core-test-kit

npm version

testStylableCore

Use import {testStylableCore} from '@stylable/core-test-kit' to test core analysis, transformation, diagnostics and symbols. All stylable files are checked for inline expectations:

single entry

// source + inline expectations
const { sheets } = testStylableCore(`
    /* @rule .entry__root */
    .root {}
`);
// single entry is mapped to `/entry.st.css`
const { meta, exports } = sheets[`/entry.st.css`];

multiple files

// source + inline expectations
const { sheets } = testStylableCore({
    '/entry.st.css': `
        @st-import Comp from './comp.st.css';

        /* @rule .entry__root .comp__root */
        .root Comp {}
    `,
    '/comp.st.css': `
        /* @rule .comp__root */
        .root {}
    `
});
// sheets results ({meta, exports})
const entryResults = sheets[`/entry.st.css`];
const compResults = sheets[`/comp.st.css`];

stylable config

testStylableCore({
    '/a.st.css': ``,
    '/b.st.css': ``,
    '/c.st.css': ``,
}, {
    entries: [`/b.st.css`, `/c.st.css`] // list of entries to transform (in order)
    stylableConfig: {
        projectRoot: string, // defaults to `/`
        resolveNamespace: (ns: string) => string, // defaults to no change
        requireModule: (path: string) => any // defaults to naive CJS eval
        filesystem: IFileSystem, // @file-services/types
        // ...other stylable configurations
    }
});

expose infra

const { stylable, fs } = testStylableCore(``);

// add a file
fs.writeFileSync(
    `/new.st.css`,
    `
    @st-import [part] from './entry.st.css';
    .part {}
    `
);
// transform new file
const { meta, exports } = stylable.transform(stylable.analyze(`/new.st.css`));

Inline expectations syntax

The inline expectation syntax can be used with testInlineExpects for testing stylesheets transformation and diagnostics.

An expectation is written as a comment just before the code it checks on. All expectations support label that will be thrown as part of an expectation fail message.

@rule - check rule transformation including selector and nested declarations:

Selector - @rule SELECTOR

/* @rule .entry__root::before */
.root::before {}

Declarations - @rule SELECTOR { decl: val; }

/* @rule .entry__root { color: red } */
.root { color: red; }

/* @rule .entry__root {
    color: red;
    background: green;
}*/
.root {
    color: red;
    background: green;
}

Target generated rules (mixin) - @rule[OFFSET] SELECTOR

.mix {
    color: red;
}
.mix:hover {
    color: green;
}
/* 
    @rule .entry__root {color: red;} 
    @rule[1] .entry__root:hover {color: green;} 
*/
.root {
    -st-mixin: mix;
}

Label - @rule(LABEL) SELECTOR

/* @rule(expect 1) .entry__root */
.root {}

/* @rule(expect 2) .entry__part */
.part {}

@atrule - check at-rule transformation of params:

AtRule params - @atrule PARAMS:

/* @atrule screen and (min-width: 900px) */
@media value(smallScreen) {}

Label - @atrule(LABEL) PARAMS

/* @atrule(jump keyframes) entry__jump */
@keyframes jump {}

@decl - check declaration transformation

Prop & value - @decl PROP: VALUE

.root {
    /* @decl color: red */
    color: red
}

Label - @decl(LABEL) PROP: VALUE

.root {
    /* @decl(color is red) color: red */
    color: red;
}

@analyze & @transform - check single file (analyze) and multiple files (transform) diagnostics:

Severity - @analyze-SEVERITY MESSAGE / @transform-SEVERITY MESSAGE

/* @analyze-info found deprecated usage */
@st-global-custom-property --x;

/* @analyze-warn missing keyframes name */
@keyframes {}

/* @analyze-error invalid functional id */
#id() {}

.root {
    /* @transform-error unresolved "unknown" build variable */
    color: value(unknown);
}

Word - @analyze-SEVERITY word(TEXT) MESSAGE / @transform-SEVERITY word(TEXT) MESSAGE

/* @transform-warn word(unknown) unknown pseudo element */
.root::unknown {}

Label - @analyze(LABEL) MESSAGE / @transform(LABEL) MESSAGE

/* @analyze-warn(local keyframes) missing keyframes name */
@keyframes {}

/* @transform-warn(imported keyframes) unresolved keyframes "unknown" */
@keyframes unknown {}

Removed in transformation - @transform-remove

/* @transform-remove */
@import X from './x.st.css';

License

Copyright (c) 2019 Wix.com Ltd. All Rights Reserved. Use of this source code is governed by a MIT license.

6.0.2

1 month ago

6.0.1

2 months ago

6.0.0

2 months ago

5.19.0

3 months ago

5.18.1

3 months ago

6.0.0-rc.3

4 months ago

5.18.0

4 months ago

5.15.0

10 months ago

5.16.1

8 months ago

5.16.0

8 months ago

6.0.0-rc.1

7 months ago

5.17.0

6 months ago

6.0.0-rc.2

7 months ago

5.14.0

11 months ago

5.15.2

8 months ago

5.15.1

10 months ago

5.11.1

12 months ago

5.12.0

11 months ago

5.13.0

11 months ago

5.11.0

1 year ago

5.9.0

1 year ago

5.10.0

1 year ago

5.8.0

1 year ago

5.7.1

1 year ago

5.7.0

1 year ago

5.4.1-rc.1

1 year ago

5.5.0

1 year ago

5.6.1

1 year ago

5.6.0

1 year ago

5.3.0

2 years ago

5.4.0

1 year ago

5.3.0-rc.1

2 years ago

5.3.1-rc.1

2 years ago

5.2.1

2 years ago

4.14.1

2 years ago

4.14.2

2 years ago

5.0.0-rc.3

2 years ago

5.0.0-rc.4

2 years ago

5.0.0-rc.5

2 years ago

4.14.0

2 years ago

5.0.1

2 years ago

4.13.3

2 years ago

5.0.0

2 years ago

5.1.0

2 years ago

5.2.0

2 years ago

4.15.0

2 years ago

4.15.1

2 years ago

5.0.0-rc.1

2 years ago

5.0.0-rc.2

2 years ago

4.13.2

2 years ago

4.13.1

2 years ago

4.13.0

2 years ago

4.12.0

2 years ago

4.11.0

2 years ago

4.10.4

2 years ago

4.10.1

2 years ago

4.10.2

2 years ago

4.10.3

2 years ago

4.10.0

2 years ago

4.9.4

2 years ago

4.9.3

2 years ago

4.9.5

2 years ago

4.9.0

2 years ago

4.9.2

2 years ago

4.9.1

2 years ago

3.13.2

2 years ago

4.8.1

3 years ago

4.8.3

3 years ago

4.8.0

3 years ago

4.7.4

3 years ago

4.7.3

3 years ago

4.7.2

3 years ago

4.7.1

3 years ago

3.13.0

3 years ago

4.7.0

3 years ago

4.6.0

3 years ago

4.5.1

3 years ago

4.5.0

3 years ago

4.4.0

3 years ago

4.3.3

3 years ago

4.3.1

3 years ago

4.3.0

3 years ago

4.2.5

3 years ago

4.2.4

3 years ago

4.2.3

3 years ago

4.2.2

3 years ago

4.2.1

3 years ago

4.2.0

3 years ago

4.1.1

3 years ago

4.1.0

3 years ago

4.0.6

3 years ago

3.12.4

3 years ago

4.0.4

3 years ago

3.12.3

3 years ago

4.1.0-alpha.3

3 years ago

4.1.0-alpha.1

3 years ago

4.1.0-alpha.0

3 years ago

4.1.0-alpha.2

3 years ago

4.0.2

3 years ago

3.12.2

3 years ago

4.0.1

3 years ago

3.12.1

3 years ago

3.12.0

3 years ago

4.0.0

3 years ago

3.11.14

3 years ago

4.0.0-alpha.10

3 years ago

4.0.0-alpha.9

3 years ago

4.0.0-alpha.7

3 years ago

3.11.13

3 years ago

4.0.0-alpha.6

3 years ago

4.0.0-alpha.5

3 years ago

3.11.10

3 years ago

4.0.0-alpha.4

3 years ago

3.11.9

3 years ago

4.0.0-alpha.3

3 years ago

4.0.0-alpha.2

3 years ago

4.0.0-alpha.1

3 years ago

4.0.0-alpha.0

3 years ago

3.11.8

3 years ago

3.11.6

3 years ago

3.11.7

3 years ago

3.11.5

4 years ago

3.11.2

4 years ago

3.11.1

4 years ago

3.11.0

4 years ago

3.10.1

4 years ago

3.10.0

4 years ago

3.9.1

4 years ago

3.9.0

4 years ago

3.8.4

4 years ago

3.8.1

4 years ago

3.8.0

4 years ago

3.7.2

4 years ago

3.7.0

4 years ago

3.6.3

4 years ago

3.6.2

4 years ago

3.6.1

4 years ago

3.6.0

4 years ago

3.5.2

4 years ago

3.5.0

4 years ago

3.4.5

4 years ago

3.4.4

4 years ago

3.4.3

4 years ago

3.4.2

4 years ago

3.4.1

4 years ago

3.4.0

4 years ago

3.3.2-rc.1

4 years ago

3.3.0

4 years ago

3.2.1

4 years ago

3.2.0

4 years ago

3.1.4

4 years ago

3.1.3

4 years ago

3.1.1

4 years ago

3.1.0

4 years ago

3.0.0

4 years ago

2.5.3

4 years ago

2.5.2

4 years ago

2.5.1

5 years ago

2.5.0

5 years ago

2.5.0-alpha.1

5 years ago

2.5.0-alpha.0

5 years ago

2.4.1

5 years ago

2.4.1-alpha.1

5 years ago

2.4.1-alpha.0

5 years ago

2.4.0

5 years ago

2.3.3-alpha.1

5 years ago

2.3.3-alpha.0

5 years ago

2.3.2

5 years ago

2.3.1

5 years ago

2.3.1-alpha.0

5 years ago

2.3.0

5 years ago

2.1.5-alpha.0

5 years ago

2.1.4

5 years ago

2.1.3

5 years ago

2.1.1

5 years ago

2.1.0

5 years ago

2.0.9

5 years ago

2.0.8

5 years ago

2.0.7

5 years ago

2.0.6

5 years ago

2.0.5

5 years ago

2.0.4

5 years ago

2.0.3

5 years ago

2.0.2

5 years ago

2.0.1

5 years ago

2.0.0

5 years ago