| // Copyright 2018 the V8 project authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| import postcss from "postcss"; |
| import nested from "postcss-nested"; |
| import autoprefixer from "autoprefixer"; |
| |
| const nestedRules = ` |
| .phone { |
| &_title { |
| width: 500px; |
| @media (max-width: 500px) { |
| width: auto; |
| } |
| body.is_dark & { |
| color: white; |
| } |
| } |
| img { |
| display: block; |
| } |
| }`; |
| |
| const payloads = [ |
| { |
| name: "bootstrap-5.3.7.css", |
| options: { from: `third_party/bootstrap-5.3.7.css`, map: false }, |
| }, |
| { |
| name: "foundation-6.9.0.css", |
| options: { from: `third_party/foundation-6.9.0.css`, map: false }, |
| }, |
| { |
| name: "angular-material-20.1.6.css", |
| options: { from: `third_party/angular-material-20.1.6.css`, map: false }, |
| }, |
| ]; |
| |
| export function runTest(fileData) { |
| const cleaner = postcss([ |
| autoprefixer({ add: false, overrideBrowserslist: [] }), |
| ]); |
| const processor = postcss([autoprefixer, nested]); |
| |
| const testData = payloads.map(({ name, options }) => { |
| // Clean prefixes. |
| const source = fileData[name]; |
| // Add some nested rules. |
| const css = cleaner.process(source).css + nestedRules; |
| |
| return { |
| payload: css, |
| options, |
| }; |
| }); |
| |
| return testData.map( |
| ({ payload, options }) => processor.process(payload, options).css |
| ); |
| } |