4
votes

Créer une chaîne aléatoire dans Cypress et la transmettre à une commande cy

Je suis nouveau sur Cypress et j'ai un petit problème sur lequel j'aimerais avoir de l'aide.

J'ai un champ de saisie dans mon application qui me permet de saisir un nom. Ce nom doit être unique et ne doit pas être identique à un nom existant déjà dans le système.

Je clique actuellement sur ce champ de saisie par:
cy.get('input[type="text" .form-control')

Si j'utilise la commande cy.type () , cela tapera toujours la même valeur fournie, mais chaque fois que le test s'exécute, je souhaite attribuer une valeur différente.

// Fill in some details of a new class to proceed with creation  
cy.get('.pull-left > h4').contains('Add a new class')  
cy.get('input[type="text"].form-control') // Clicks on the field

// Some code to go here to create a random string and use what was created and 
type this into the field above

Attendu
Créez une fonction qui permet de générer une chaîne aléatoire, puis de la saisir dans le champ de saisie par une commande de cyprès normale.


1 commentaires

Existe-t-il une sorte d'API qui vérifie si le nom est unique? Quel est le mécanisme qui vérifie votre chaîne pour voir si elle a été utilisée auparavant? J'intercepterais la demande d'API qui vérifie le nom en double afin que vous puissiez le contrôler. Vous pouvez utiliser la chaîne de date ou un guide.


5 Réponses :


0
votes

Je fais quelques hypothèses ici. Je suppose qu'il existe une sorte d'API que vous appelez pour vérifier s'il existe un nom en double. Je stuberais / moquerais cela pour contourner le problème. Je prends une supposition ici, mais vous transmettez le nom et vous obtenez quelque chose en retour qui dit vrai ou faux, vous fermez cela pour toujours retourner faux, afin que vous puissiez faire votre duplication.


0 commentaires

0
votes

J'ai créé une fonction unique qui génère la chaîne aléatoire, puis crée une variable pour stocker cette valeur, puis utilise la valeur dans la logique du reste du test.

    function generate_random_string(string_length) {
        let random_string = '';
        let random_ascii;
        for(let i = 0; i < string_length; i++) {
            random_ascii = Math.floor((Math.random() * 25) + 97);
            random_string += String.fromCharCode(random_ascii)
        }
        return random_string
    }

J'attribue ensuite ceci à une variable ci-dessous:

var random_string = generate_random_string (8)

Puis le extrait la sortie de celui-ci et mis dans le champ en utilisant les commandes simples get et type dans Cypress:

cy.get ('input [type = "text"]. form-control '). type (random_string)

Ceci obtient la valeur et la tape dans le champ que je voulais. Je peux également "random_string" à nouveau dans n'importe quel test, par exemple si je souhaite faire des affirmations plus tard dans le test.


0 commentaires

4
votes

Essayez ce code. J'espère que cela fonctionnera.

cy.get(':nth-child(2) > :nth-child(2) > input').type(userID_Alpha_Numeric())      

function userID_Alpha_Numeric() {
    var text = "";
    var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";

    for (var i = 0; i < 10; i++)
      text += possible.charAt(Math.floor(Math.random() * possible.length));

    return text;
  }

OU Utilisez le code suivant

cy.get(':nth-child(2) > :nth-child(2) > input').type(userID_Alpha())
function userID_Alpha() {
    var text = "";
    var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";

    for (var i = 0; i < 10; i++)
      text += possible.charAt(Math.floor(Math.random() * possible.length));

    return text;
  }


1 commentaires

Nouvel utilisateur Cypress ici ... Cela peut-il être écrit dans une commande Cypress Custom? Ou où est un bon endroit pour stocker une fonction d'assistance comme celle-ci, en supposant qu'elle soit utilisée dans plusieurs tests?



0
votes
example.spec.js

it('timestamp', function() {
cy.task('datenow').then((random) => { cy.log('test' + random)})
}) 

plugins/index.js

on('task', {
datenow () {
return Date.now()
}
}) 
The above code will generate random strings

0 commentaires

8
votes

Je viens de trouver une autre approche dans un blog, en l'ajoutant ici pour référence.

const uuid = () => Cypress._.random(0, 1e6)
const id = uuid()
const testname = `testname${id}`
cy.get('input').type(testname);

a bien fonctionné pour moi :)


0 commentaires