npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

vue-test-attribute

v1.3.1

Published

Vue 2 directive that adds data-test attribute to elements

Downloads

47

Readme

vue-test-attribute

Vue 2 directive that adds data-test attribute to elements

Install

npm install vue-test-attribute

Usage

1. Bring it in to your app

import Vue from 'vue';
import VueTestAttribute from 'vue-test-attribute';

Vue.use(VueTestAttribute);

2a. Use with string literal

<div v-test="'address'"></div>

renders

<div data-test="address"></div>

2b. Use with string value

<div v-test="testId"></div>
data() {
  return {
    testId: 'address'
  };
}

renders

<div data-test="address"></div>

2c. Use with array value

<div v-test="testIds"></div>
data() {
  return {
    testIds: ['address', 'address-1']
  };
}

renders

<div data-test="address address-1"></div>

2d. Use with false value

<div v-test="testId"></div>
data() {
  return {
    testId: false
  };
}

renders

<div></div>

(data-test is not added to element)

3. Find element in a test

Using an attribute selector.

const el = document.querySelector('[data-test~="address"]');

assert(...);

Settings

You can pass an object of settings to Vue.use() to control this directive's behavior.

const settings = {...};

Vue.use(VueTestAttribute, settings);

settings.production

| Value | Behavior | |-----------|-----------------------------------------------------------------------| | false | data-test attributes will be added | | true | data-test attributes will not be added | | (not set) | Behavior is based on value of process.env.NODE_ENV === "production" |

Server-side rendering

import VueTestAttribute from 'vue-test-attribute';
import {createRenderer} from 'vue-server-renderer';

const renderer = createRenderer({
  directives: {
    // configure renderer with VueTestAttribute
    test: VueTestAttribute.ssr()
  }
});

VueTestAttribute.ssr() accepts an optional settings object. See above for details on settings.

FAQ

Q1: Why not just find elements by content/class/id/xpath in tests?

A1: https://blog.kentcdodds.com/making-your-ui-tests-resilient-to-change-d37a6ee37269

Q2: Why not just use

<div :data-test="testId" />

A2: That will work fine but with this directive

  • If you typo the directive name Vue will report an error
  • It's easier to ensure uniformity in the data- attribute used
  • Arrays are joined for you
  • data-test attributes won't be added in production builds

License

MIT