TestUtils.ts 1.1 KB

123456789101112131415161718192021222324252627
  1. const className = (classNameStartsWith: string, useContains?: boolean) =>
  2. `[class${useContains ? "*" : "^"}=${classNameStartsWith}]`;
  3. export default {
  4. select: (name: string, parent?: Element) =>
  5. (parent || document).querySelector<HTMLElement>(className(name)),
  6. selectInput: (name: string, parent?: Element) =>
  7. (parent || document).querySelector<HTMLInputElement>(className(name)),
  8. selectContains: (name: string, parent?: Element) =>
  9. (parent || document).querySelector<HTMLElement>(className(name, true)),
  10. selectAll: (name: string, parent?: Element) =>
  11. (parent || document).querySelectorAll<HTMLElement>(className(name)),
  12. rgbToHex: (rgb: string) => {
  13. const componentToHex = (c: number) => {
  14. const hex = c.toString(16).toUpperCase();
  15. return hex.length === 1 ? `0${hex}` : hex;
  16. };
  17. const matches = /rgb\((\d+), (\d+), (\d+)\)/.exec(rgb);
  18. if (matches) {
  19. const transform = (match: string) => componentToHex(parseInt(match, 10));
  20. return `#${transform(matches[1])}${transform(matches[2])}${transform(
  21. matches[3],
  22. )}`;
  23. }
  24. return rgb;
  25. },
  26. };