Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .github/workflows/multilingual.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,12 @@ jobs:
- name: Check Go modules with Bundler vendor directory
run: bundle exec ruby scripts/test_go_modules.rb

- name: Test post creation and migration
run: bundle exec ruby scripts/test_post_layout.rb

- name: Check post directory convention
run: bundle exec ruby scripts/check_post_layout.rb

- name: Test native multilingual behavior
run: bundle exec ruby scripts/test_multilingual.rb

Expand Down
332 changes: 278 additions & 54 deletions README.md

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ slug: teste-de-performance-uma-breve-analise-do-site-ingresso-com
description: "A record from 2023 about performance problems during ticket presales and the importance of performance testing."
tags: [testes, performance, qualidade]
draft: false
url: "/en/docs/2023/fevereiro/teste-de-performance-uma-breve-analise-do-site-ingresso-com/"
---

> Originally published on [Medium](https://medium.com/@kellenxaviier/teste-de-performance-uma-breve-an%C3%A1lise-do-site-ingresso-com-90e89aacb9e6) on February 4, 2023. This record preserves the original article and images; the English text is a translation.
Expand All @@ -31,13 +32,13 @@ Today we will discuss Black Friday and Ingresso.com as examples for exploring **

Around noon, a peak time, on November 29, 2021, ingresso.com, one of the largest cinema ticket sales websites, could not handle the number of simultaneous visitors buying presale tickets for the most anticipated movie of the year.

![Spider-Man: No Way Home page on ingresso.com](ingresso-com-pre-venda.png "Image taken from ingresso.com")
![Spider-Man: No Way Home page on ingresso.com](../images/teste-de-performance-uma-breve-analise-do-site-ingresso-com--ingresso-com-pre-venda.png "Image taken from ingresso.com")

The instability was so severe that some people spent *more than an hour trying to complete a purchase*. Some users who managed to complete the purchase flow were charged but did not receive their tickets and had to request a refund.

![Loading indicator during the ingresso.com purchase flow](ingresso-com-falha-na-compra.png "Image taken from ingresso.com")
![Loading indicator during the ingresso.com purchase flow](../images/teste-de-performance-uma-breve-analise-do-site-ingresso-com--ingresso-com-falha-na-compra.png "Image taken from ingresso.com")

![Connection error displayed on ingresso.com](ingresso-com-instabilidade.png "Image taken from ingresso.com")
![Connection error displayed on ingresso.com](../images/teste-de-performance-uma-breve-analise-do-site-ingresso-com--ingresso-com-instabilidade.png "Image taken from ingresso.com")

### Other problems also occurred

Expand All @@ -52,21 +53,21 @@ The instability was so severe that some people spent *more than an hour trying t
- Movie no longer available: the site displayed the movie as though it were no longer showing;
- Generic messages: users encountered errors, but the messages were imprecise. The same message appeared for several different errors, making the flow frustrating;

![Ingresso.com reporting no upcoming movies](ingresso-com-erros.png "ingresso.com website")
![Ingresso.com reporting no upcoming movies](../images/teste-de-performance-uma-breve-analise-do-site-ingresso-com--ingresso-com-erros.png "ingresso.com website")

### The instability was so severe that it generated memes

![Memes about instability during the Spider-Man ticket presale](meme-instabilidade.png)
![Memes about instability during the Spider-Man ticket presale](../images/teste-de-performance-uma-breve-analise-do-site-ingresso-com--meme-instabilidade.png)

### Others were not so happy

![Comments on ingresso.com's Instagram post about the presale](instagram-reclamacoes-1.png "Instagram — @ingressocom")
![Comments on ingresso.com's Instagram post about the presale](../images/teste-de-performance-uma-breve-analise-do-site-ingresso-com--instagram-reclamacoes-1.png "Instagram — @ingressocom")

![Users reporting ticket purchase failures](instagram-reclamacoes-2.png "Instagram — @ingressocom")
![Users reporting ticket purchase failures](../images/teste-de-performance-uma-breve-analise-do-site-ingresso-com--instagram-reclamacoes-2.png "Instagram — @ingressocom")

### Post with a statement from ingresso.com

![Ingresso.com's statement about record simultaneous traffic](instagram-nota-de-esclarecimento.png "Instagram — @ingressocom")
![Ingresso.com's statement about record simultaneous traffic](../images/teste-de-performance-uma-breve-analise-do-site-ingresso-com--instagram-nota-de-esclarecimento.png "Instagram — @ingressocom")

> Performance tests help prevent the situations described above and maintain an application's quality and scalability!

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ slug: teste-de-performance-uma-breve-analise-do-site-ingresso-com
description: "Registro de 2023 sobre problemas de desempenho na pré-venda de ingressos e a importância dos testes de performance."
tags: [testes, performance, qualidade]
draft: false
url: "/docs/2023/fevereiro/teste-de-performance-uma-breve-analise-do-site-ingresso-com/"
---

> Publicado originalmente no [Medium](https://medium.com/@kellenxaviier/teste-de-performance-uma-breve-an%C3%A1lise-do-site-ingresso-com-90e89aacb9e6) em 4 de fevereiro de 2023. Este registro preserva o texto e as imagens do artigo original.
Expand All @@ -31,13 +32,13 @@ Hoje vamos falar sobre a Black Friday e a Ingresso.com, esses serão nossos exem

Por volta do meio-dia (horário de pico) em 29 de novembro de 2021, o site ingresso.com, uma das maiores páginas de vendas de ingressos de cinema, não aguentou a quantidade de acessos simultâneos para as compras dos ingressos na pré-venda do filme mais aguardado do ano.

![Página do filme Homem-Aranha: Sem Volta para Casa no ingresso.com](ingresso-com-pre-venda.png "imagem retirada do site ingresso.com")
![Página do filme Homem-Aranha: Sem Volta para Casa no ingresso.com](../images/teste-de-performance-uma-breve-analise-do-site-ingresso-com--ingresso-com-pre-venda.png "imagem retirada do site ingresso.com")

A instabilidade foi tanta que houve pessoas que ficaram *mais de 1 hora para realizar a compra*. Alguns que conseguiram realizar o fluxo de compra tiveram o valor descontado mas não receberam os ingressos, e tiveram que solicitar o estorno do valor.

![Indicador de carregamento do ingresso.com durante o fluxo de compra](ingresso-com-falha-na-compra.png "imagem retirada do site ingresso.com")
![Indicador de carregamento do ingresso.com durante o fluxo de compra](../images/teste-de-performance-uma-breve-analise-do-site-ingresso-com--ingresso-com-falha-na-compra.png "imagem retirada do site ingresso.com")

![Mensagem de erro de conexão exibida no ingresso.com](ingresso-com-instabilidade.png "imagem retirada do site ingresso.com")
![Mensagem de erro de conexão exibida no ingresso.com](../images/teste-de-performance-uma-breve-analise-do-site-ingresso-com--ingresso-com-instabilidade.png "imagem retirada do site ingresso.com")

### Outros problemas ocorreram também, como

Expand All @@ -52,21 +53,21 @@ A instabilidade foi tanta que houve pessoas que ficaram *mais de 1 hora para rea
- Filme não está mais disponível — exibindo como se o filme não estivesse mais em cartaz;
- Mensagens Genérica — o erro ocorria ao usuário, porém a mensagem informada não era nada precisa, sendo a mesma para diversos erros diferentes, gerando frustração no fluxo;

![Página do ingresso.com informando que não há filmes em breve](ingresso-com-erros.png "site ingresso.com")
![Página do ingresso.com informando que não há filmes em breve](../images/teste-de-performance-uma-breve-analise-do-site-ingresso-com--ingresso-com-erros.png "site ingresso.com")

### Foi tão grande a instabilidade que gerou alguns memes

![Montagem de memes sobre a instabilidade na pré-venda de Homem-Aranha](meme-instabilidade.png)
![Montagem de memes sobre a instabilidade na pré-venda de Homem-Aranha](../images/teste-de-performance-uma-breve-analise-do-site-ingresso-com--meme-instabilidade.png)

### Já outros não estavam tão contentes assim…

![Comentários na publicação do Instagram do ingresso.com sobre a pré-venda](instagram-reclamacoes-1.png "instagram — @ingressocom")
![Comentários na publicação do Instagram do ingresso.com sobre a pré-venda](../images/teste-de-performance-uma-breve-analise-do-site-ingresso-com--instagram-reclamacoes-1.png "instagram — @ingressocom")

![Comentários de usuários relatando falhas na compra de ingressos](instagram-reclamacoes-2.png "instagram — @ingressocom")
![Comentários de usuários relatando falhas na compra de ingressos](../images/teste-de-performance-uma-breve-analise-do-site-ingresso-com--instagram-reclamacoes-2.png "instagram — @ingressocom")

### Postagem: nota de esclarecimento do site ingresso.com

![Nota de esclarecimento do ingresso.com sobre o recorde de acessos simultâneos](instagram-nota-de-esclarecimento.png "instagram — @ingressocom")
![Nota de esclarecimento do ingresso.com sobre o recorde de acessos simultâneos](../images/teste-de-performance-uma-breve-analise-do-site-ingresso-com--instagram-nota-de-esclarecimento.png "instagram — @ingressocom")

> Os Teste de Performance no sistema servem para que não ocorram essas situações citadas, para manter a qualidade e escalabilidade da aplicação!

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,23 +5,24 @@ slug: cypress-e-boas-praticas-de-automacao
tags: [cypress, automacao, boas, praticas, docs]
draft: false
featured: true
url: "/en/docs/2024/outubro/cypress-e-boas-praticas-de-automacao/"
---

Avoiding *false positives* with Cypress. Below is an example of some code and a commands file with a simple application login:

![Example of poor practices](exemplo-praticas-ruins.png)
![Example of poor practices](../images/cypress-e-boas-praticas-de-automacao--exemplo-praticas-ruins.png)

This application was encountering an error during login. The following code was added to the automation to make login succeed:

![What does this code do?](o_que_o_erro_faz.png)
![What does this code do?](../images/cypress-e-boas-praticas-de-automacao--o-que-o-erro-faz.png)

But what does that code mean? It suppresses errors that occur in the application while Cypress tests run.

How? Using `cy.on('uncaught:exception')` and returning false tells Cypress to ignore errors in your application. This allows the test to continue even if the page has not fully loaded, giving elements time to render before Cypress tries to interact with them.

Why is removing `cy.on('uncaught:exception')` important? In this case, manipulating the test to ignore the error by returning false introduces a false positive. See below:

![Login reported as successful](login_com_sucesso.png)
![Login reported as successful](../images/cypress-e-boas-praticas-de-automacao--login-com-sucesso.png)

## Alternatives for handling loading time and avoiding false positives

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,23 +5,24 @@ slug: cypress-e-boas-praticas-de-automacao
tags: [cypress, automacao, boas, praticas, docs]
draft: false
featured: true
url: "/docs/2024/outubro/cypress-e-boas-praticas-de-automacao/"
---

Evitando o uso de *Falsos Positivos* com Cypress. Segue abaixo um exemplo de um código, e um arquivo commands com um simples login na aplicação:

![exemplo-praticas-ruins](exemplo-praticas-ruins.png)
![exemplo-praticas-ruins](../images/cypress-e-boas-praticas-de-automacao--exemplo-praticas-ruins.png)

Essa aplicação estava ocorrendo um certo erro ao realizar o login, e foi adicionado o seguinte trecho de código na automação para poder realizar o login com sucesso:

![o que o erro faz?](o_que_o_erro_faz.png)
![o que o erro faz?](../images/cypress-e-boas-praticas-de-automacao--o-que-o-erro-faz.png)

Mas o que esse trecho diz? Serve para suprimir os erros que ocorrem na aplicação durante a execução dos testes do Cypress.

Como assim? Ao usar ```cy.on('uncaught:exception')``` e retornar false, está instruindo o Cypress a ignorar qualquer erro que ocorra na sua aplicação. Isso permite que o teste continue mesmo que a página ainda não esteja totalmente carregada, dando tempo para que os elementos sejam renderizados antes que o Cypress tente interagir com eles.

Por que remover ```cy.on('uncaught:exception')``` é importante? Nesse caso, como está sendo manipulado o teste, forçando a “ignorar esse erro retornando que ele seja falso” é adicionado um falso positivo no nosso teste. Segue abaixo:

![alt text](login_com_sucesso.png)
![alt text](../images/cypress-e-boas-praticas-de-automacao--login-com-sucesso.png)

## Alternativas e soluções para lidar com o tempo de carregamento e evitar adicionar “falso positivo”

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ date: 2025-04-17
slug: pesquisa-de-sites-mercado-foco-em-academias
tags: [pesquisa, ux, design]
draft: false
url: "/en/docs/2025/abril/pesquisa-de-sites-mercado-foco-em-academias/"
---

### Studies and general analysis of gym websites
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ date: 2025-04-17
slug: pesquisa-de-sites-mercado-foco-em-academias
tags: [pesquisa, ux, design]
draft: false
url: "/docs/2025/abril/pesquisa-de-sites-mercado-foco-em-academias/"
---

### Estudos e Análise Geral de Sites de Academias de Atividades Físicas
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ date: 2025-04-24
slug: promover-a-inovacao-em-seu-ambiente-de-desenvolvimento-de-software
tags: [design-thinking, ux, inovacao]
draft: false
url: "/en/docs/2025/abril/promover-a-inovacao-em-seu-ambiente-de-desenvolvimento-de-software/"
---

I am applying these studies to the strength training studio I attend in northern Porto Alegre. I asked the owner, who started the business in January 2025, for permission to apply the studies and develop a project for a real business with real needs.
Expand All @@ -24,19 +25,19 @@ As a gym member, I ran into questions: what are the prices? How do the packages

Based on this, I organized the information I had and talked to the owner to understand and refine the questions. Using design thinking techniques, I applied the **Value Proposition Canvas** to get the ideas out of my head and share them with the person involved: the business owner. See below:

![Value Proposition Canvas](value-proposition-canvas.png)
![Value Proposition Canvas](../images/promover-a-inovacao-em-seu-ambiente-de-desenvolvimento-de-software--value-proposition-canvas.png)

![Value Proposition Canvas applied to the studio project](aplicado-value-proposition-canvas.png)
![Value Proposition Canvas applied to the studio project](../images/promover-a-inovacao-em-seu-ambiente-de-desenvolvimento-de-software--aplicado-value-proposition-canvas.png)

I also used ChatGPT to structure the details and organize the information in the appropriate places, so I would not lose focus on the details.

### ChatGPT

![Using ChatGPT to organize information](chatgpt-1.png)
![Using ChatGPT to organize information](../images/promover-a-inovacao-em-seu-ambiente-de-desenvolvimento-de-software--chatgpt-1.png)

Below, I used a checklist of the information I had already mapped to stay organized throughout the process:

![Checklist of mapped information](checklist.png)
![Checklist of mapped information](../images/promover-a-inovacao-em-seu-ambiente-de-desenvolvimento-de-software--checklist.png)

To make the interview clearer, I decided to create a form for the owner to answer. **This corresponds to the "Define" stage mentioned and applied here.**

Expand All @@ -46,7 +47,7 @@ To make the interview clearer, I decided to create a form for the owner to answe

The ChatGPT output above gives us the following:

![ChatGPT during ideation](chatgpt-ideacao.png)
![ChatGPT during ideation](../images/promover-a-inovacao-em-seu-ambiente-de-desenvolvimento-de-software--chatgpt-ideacao.png)

I will reorganize some points I consider important based on the needs mapped with the **Value Proposition Canvas**.

Expand All @@ -62,37 +63,37 @@ Landing page solution brainstorm, edited:

### 4. Prototype

![Initial prototype](prototipagem-1.png)
![Initial prototype](../images/promover-a-inovacao-em-seu-ambiente-de-desenvolvimento-de-software--prototipagem-1.png)

I am terrible at design 😭, **so I used Canva to bring this to life** instead of letting that stop me.

**Note:** a quick reminder of the live class discussion: "Great, let's go and do it."

![Live class about prototyping](prototipagem-2.png)
![Live class about prototyping](../images/promover-a-inovacao-em-seu-ambiente-de-desenvolvimento-de-software--prototipagem-2.png)

I do not know design.

![Prototyping attempt in Canva](prototipagem-3.png)
![Prototyping attempt in Canva](../images/promover-a-inovacao-em-seu-ambiente-de-desenvolvimento-de-software--prototipagem-3.png)

---

## 5. Test

Creating the prototype: as mentioned, this prototype was made in Canva to visualize the planning from the Value Proposition Canvas. Below is the screen sequence:

![Prototype screen 1](teste-prototipo-1.png)
![Prototype screen 1](../images/promover-a-inovacao-em-seu-ambiente-de-desenvolvimento-de-software--teste-prototipo-1.png)

![Prototype screen 2](teste-prototipo-2.png)
![Prototype screen 2](../images/promover-a-inovacao-em-seu-ambiente-de-desenvolvimento-de-software--teste-prototipo-2.png)

Include the remaining service information once the form has been answered.

![Prototype screen 3](teste-prototipo-3.png)
![Prototype screen 3](../images/promover-a-inovacao-em-seu-ambiente-de-desenvolvimento-de-software--teste-prototipo-3.png)

![Prototype screen 4](teste-prototipo-4.png)
![Prototype screen 4](../images/promover-a-inovacao-em-seu-ambiente-de-desenvolvimento-de-software--teste-prototipo-4.png)

![Prototype screen 5](teste-prototipo-5.png)
![Prototype screen 5](../images/promover-a-inovacao-em-seu-ambiente-de-desenvolvimento-de-software--teste-prototipo-5.png)

![Prototype screen 6](teste-prototipo-6.png)
![Prototype screen 6](../images/promover-a-inovacao-em-seu-ambiente-de-desenvolvimento-de-software--teste-prototipo-6.png)

This initial prototype draft was developed to validate the owner's needs for serving customers.

Expand Down Expand Up @@ -143,7 +144,7 @@ For use in the **Empathize and Define** stages with the client.

**See the website prototype:** [https://site-academia-app.vercel.app/](https://site-academia-app.vercel.app/)

Website research for the fitness studio market — [link]({{< relref "/docs/2025/abril/pesquisa-de-sites-mercado-foco-em-academias.en.md" >}}).
Website research for the fitness studio market — [link]({{< relref "/docs/2025/abril/17-04/pesquisa-de-sites-mercado-foco-em-academias.en.md" >}}).

**Study references:**

Expand Down
Loading
Loading