1. Introdução
O Google Antigravity (chamado de Antigravity no restante do documento) é um IDE agêntico do Google. No codelab de introdução ao Antigravity, você pode aprender os conceitos básicos do Antigravity. Neste codelab, vamos usar o Antigravity para criar aplicativos reais. Vamos passar de pesquisas simples na Web para gerar aplicativos full-stack e testes de unidade de nível empresarial.
Pré-requisitos:
- O Google Antigravity está instalado e configurado.
- Noções básicas sobre o Google Antigravity. Recomendamos que você conclua o codelab: Introdução ao Google Antigravity.
2. Sobre os casos de uso
Como você já tem um entendimento básico do Antigravity, vamos analisar alguns casos de uso para entender como ele funciona. O Antigravity é uma plataforma focada em agentes. Isso significa que, na maioria dos casos, estamos apenas uma instrução ao agente, que então realiza a tarefa, pede permissões se necessário, produz os artefatos e nos notifica quando a tarefa é concluída. Por isso, não podemos produzir todas as respostas da conversa do agente em cada um dos casos de uso a seguir. Vamos compartilhar as instruções e algumas capturas de tela necessárias dos resultados esperados, mas seus resultados podem ser um pouco diferentes.
Os casos de uso que vamos abordar variam desde a automação de algumas tarefas com sites externos até a geração e verificação de casos de teste de unidade para um projeto e o desenvolvimento completo de um site. Vamos lá.
3. Destaques de notícias
Este é um caso de uso simples, mas pode ser a base para usar o navegador da Web para visitar sites, extrair informações, realizar algumas ações e retornar dados ao usuário.
Neste caso, vamos acessar o site do Google Notícias e extrair algumas informações de lá. Mas você pode testar um site da sua escolha e ver como funciona.
Verifique se você está em Agent Manager e selecionou Playground, conforme mostrado abaixo:

Em seguida, dê a seguinte instrução:

Isso vai iniciar o processo do agente e determinar que ele precisa iniciar o navegador etc. Preste atenção ao processo de pensamento e veja como o agente realiza o trabalho. Se tudo der certo, o navegador Antigravity será aberto e vai acessar o site, conforme mostrado abaixo. A borda azul ao redor do site mostra que o agente agora está controlando o navegador e navegando pelo site para receber as informações.

Quando terminar, você também vai ver os artefatos sendo gerados, conforme mostrado abaixo:

Confira abaixo um exemplo de execução pelo agente:

À esquerda, temos o processo de pensamento. Você também pode rolar pelos pontos e ver a reprodução e outros dados.
O que testar
- Depois de entender isso, escolha um site disponível e de onde você quer que o agente acesse e resuma alguns dados. Pense em um site que você sabe que tem painéis e gráficos e peça para ele escolher alguns valores.
- Tente o seguinte comando:
Visit https://docs.cloud.google.com/release-notes and get me a summary of the release notes, categorized by product.
4. Gerar um site dinâmico com Python e Flask
Agora vamos gerar um aplicativo da Web completo. O aplicativo da Web que vamos criar é um site que fornece informações sobre um evento técnico de um dia, com palestras de vários palestrantes ao longo do dia.
Mais uma vez, verifique se você está em Agent Manager e selecionou Playground.
Dê o seguinte comando:
I would like to generate a website that is a 1-day technical conference informational site.
The website should have the following functionality:
1. A home page that shows the current date, location, schedule and time table.
2. The 1-day event is a list of 8 talks in total.
3. Each talk has 1 or 2 max. speakers.
4. A talk has an ID, Title, Speakers, Category (1 or 2), Description and time of the talk.
5. Each speaker has a First Name, Last Name and LinkedIn url.
6. Allow for users to search by category, speaker, title.
7. Give a lunch break of 60 minutes.
8. Use dummy data for events and speakers, come up with a schedule, the event is about Google Cloud Technologies.
9. Tech Stack: Python and Flask framework on server side. Front-end is basic HTML, CSS and JavaScript.
10. Test out the site on your own for all functionality and provide a detailed README on how to setup, run and make any further changes.
11. Launch the web application for me to review.
Você pode começar a conversa com o comando acima:
À medida que o agente realiza a tarefa, ele cria os artefatos:
- Artefato de tarefa
- Artefato de implementação
- Artefato de tutorial
O artefato de tarefa abaixo foi a sequência inicial de tarefas que o agente decifrou que deveria fazer com base na tarefa atribuída a ele. Confira abaixo uma captura de tela de exemplo da execução:

Em seguida, clique no artefato Plano de implementação. Confira abaixo uma captura de tela de exemplo:

Por fim, há o artefato Tutorial. Ele contém tudo o que o agente fez, conforme mostrado abaixo:

Ele iniciou o servidor e me forneceu o URL. Clique nele para acessar o aplicativo. Confira abaixo uma captura de tela de exemplo:

Se eu mudar para o Editor, observe na tela que ele contém a pasta em que o aplicativo Python Flask é gerado. Você também vai notar que o Agent mode está marcado à direita, e você pode continuar a conversa por lá também.

Agora, digamos que queremos adicionar mais palestras ao evento. Podemos ficar no Editor e no painel do agente e dar um comando como Add two more talks to the schedule.
Isso vai fazer com que o agente analise o requisito, atualize a tarefa, o plano de implementação e valide a funcionalidade atualizada também. Confira um exemplo de conversa abaixo:

Se quiser, você pode voltar para o Gerenciador de agentes. Esse processo ajuda você a entender a transição do Gerente de agente para o Editor, fazer as mudanças necessárias e assim por diante.
O que testar
- Adicione outras funcionalidades que você quer ao aplicativo. Forneça os detalhes ao agente e observe como ele realiza a tarefa, primeiro modificando a lista de tarefas, depois o plano de implementação e assim por diante.
- Peça ao agente para gerar um README ou mais documentação para o aplicativo.
5. Gerar um app de produtividade simples
Agora vamos gerar um aplicativo da Web simples de timer Pomodoro.
Verifique se você está no Agent Manager e selecionou o Playground. Dê o seguinte comando:
Create a productivity app that features a Pomodoro timer. Give a calm and aesthetic look to the application.
Perceba como ele cria a lista de tarefas, o plano de implementação e depois segue em frente. Continue prestando atenção ao fluxo. Em algumas situações, ele vai pedir sua revisão. Confira abaixo um exemplo de execução.

Nesse caso, ele também precisa iniciar o navegador Antigravity, fazer os próprios testes e confirmar que eles foram concluídos. Uma das coisas que ele gerou foi um artefato de mídia que contém o vídeo da verificação. Essa é uma ótima maneira de ver o que foi testado. Também sugeri algumas mudanças de estilo, já que não surtiram efeito, e o Gemini conseguiu fazer isso.
O app final ficou parecido com o abaixo e ficou muito bom.

Que tal adicionar uma imagem de timer legal ao aplicativo? Basta emitir uma instrução de acompanhamento, conforme mostrado abaixo:
Add an image to the application that displays a timer.
Isso fez com que o agente adicionasse uma nova tarefa ao artefato de tarefa:

Em seguida, ele gerou uma imagem ao realizar a tarefa:

Por fim, o app tinha a imagem conforme solicitado:

O que testar
- O plano de fundo do ícone de ampulheta no aplicativo não é transparente. Tente pedir para o agente deixar transparente.
- Teste algumas variações de qualquer aplicativo que você queira gerar. Teste os estilos, imagens, peça mudanças etc.
6. Gerar testes de unidade, stubs simulados e validar testes
O último caso de uso que vamos testar aqui é a geração de testes de unidade para um arquivo de código específico que temos e para o agente executar e validar os testes.
Para isso, vamos ter um espaço de trabalho com um único arquivo Python, como mostrado abaixo:
from typing import Dict
# --- Custom Exceptions ---
class InventoryShortageError(Exception):
"""Raised when there is not enough item stock."""
pass
class PaymentFailedError(Exception):
"""Raised when the payment gateway rejects the transaction."""
pass
class InvalidOrderError(Exception):
"""Raised when the order violates business rules."""
pass
# --- External Service Interfaces (To be Mocked) ---
class InventoryService:
def get_stock(self, product_id: str) -> int:
"""Connects to DB to check stock."""
raise NotImplementedError("Real connection required")
def decrement_stock(self, product_id: str, quantity: int):
"""Connects to DB to reduce stock."""
raise NotImplementedError("Real connection required")
class PaymentGateway:
def charge(self, amount: float, currency: str) -> bool:
"""Connects to Stripe/PayPal."""
raise NotImplementedError("Real connection required")
# --- Main Business Logic ---
class Order:
def __init__(self,
inventory_service: InventoryService,
payment_gateway: PaymentGateway,
customer_email: str,
is_vip: bool = False):
self.inventory = inventory_service
self.payment = payment_gateway
self.customer_email = customer_email
self.is_vip = is_vip
self.items: Dict[str, Dict] = {} # {product_id: {'price': float, 'qty': int}}
self.is_paid = False
self.status = "DRAFT"
def add_item(self, product_id: str, price: float, quantity: int = 1):
"""Adds items to the cart. Rejects invalid prices or quantities."""
if price < 0:
raise ValueError("Price cannot be negative")
if quantity <= 0:
raise ValueError("Quantity must be greater than zero")
if product_id in self.items:
self.items[product_id]['qty'] += quantity
else:
self.items[product_id] = {'price': price, 'qty': quantity}
def remove_item(self, product_id: str):
"""Removes an item entirely from the cart."""
if product_id in self.items:
del self.items[product_id]
@property
def total_price(self) -> float:
"""Calculates raw total before discounts."""
return sum(item['price'] * item['qty'] for item in self.items.values())
def apply_discount(self) -> float:
"""
Applies business logic:
1. VIPs get flat 20% off.
2. Regulars get 10% off if total > 100.
3. No discount otherwise.
"""
total = self.total_price
if self.is_vip:
return round(total * 0.8, 2)
elif total > 100:
return round(total * 0.9, 2)
return round(total, 2)
def checkout(self):
"""
Orchestrates the checkout process:
1. Validates cart is not empty.
2. Checks stock for all items.
3. Calculates final price.
4. Charges payment.
5. Updates inventory.
"""
if not self.items:
raise InvalidOrderError("Cannot checkout an empty cart")
# 1. Check Inventory Logic
for product_id, data in self.items.items():
available_stock = self.inventory.get_stock(product_id)
if available_stock < data['qty']:
raise InventoryShortageError(f"Not enough stock for {product_id}")
# 2. Calculate Final Price
final_amount = self.apply_discount()
# 3. Process Payment
try:
success = self.payment.charge(final_amount, "USD")
if not success:
raise PaymentFailedError("Transaction declined by gateway")
except Exception as e:
# Catching generic network errors from the gateway
raise PaymentFailedError(f"Payment gateway error: {str(e)}")
# 4. Decrement Stock (Only occurs if payment succeeded)
for product_id, data in self.items.items():
self.inventory.decrement_stock(product_id, data['qty'])
self.is_paid = True
self.status = "COMPLETED"
return {"status": "success", "charged_amount": final_amount}
Verifique se você tem o arquivo Python acima localmente em uma pasta e carregue-o como um espaço de trabalho no Antigravity.
Este é um serviço de pedidos simples que tem a seguinte funcionalidade principal na função checkout:
- Valida se o carrinho não está vazio.
- Verifique o estoque de todos os itens.
- Calcula o preço final.
- Cobranças de pagamento.
- Atualiza o inventário.
Vamos atribuir ao agente a tarefa de gerar casos de teste de unidade, fornecer implementações de simulação e executar os testes para garantir que eles sejam bem-sucedidos.
Vamos abrir a pasta específica do espaço de trabalho. Você vai notar que agora também podemos usar o símbolo @ para referenciar o arquivo. Por exemplo, podemos fazer o seguinte:

Isso aparece com alguma explicação sobre o que é esse arquivo:

Podemos pedir para gerar uma visualização melhor usando o comando:
Can you visually show this class for better understanding

A próxima etapa é gerar os testes de unidade e pedir ao agente para testá-los. Dou o seguinte comando:
generate unit tests for this module and test it out with mock implementations.
Ele gerou o seguinte artefato de tarefa e seguiu com a tarefa.

Você também pode conferir os detalhes dos testes executados:

Um dos arquivos gerados também era o arquivo de teste. Confira uma captura de tela abaixo:

O que testar
Pegue seu próprio código e veja o que você pode pedir ao agente, desde adicionar mais funcionalidades até refatorar partes do código.
7. Parabéns
Parabéns! Você usou o Google Antigravity para:
- Pesquise na Web de forma autônoma.
- Crie e itere aplicativos da Web de pilha completa.
- Gere recursos e refine a estética da interface.
- Escrever e validar testes de unidade complexos com simulações.
Agora você pode deixar o Antigravity cuidar do trabalho pesado nos seus próprios projetos.
Documentos de referência
- Codelab : como começar a usar o Google Antigravity
- Site oficial : https://antigravity.google/
- Documentação: https://antigravity.google/docs
- Casos de uso : https://antigravity.google/use-cases
- Download : https://antigravity.google/download
- Canal do YouTube do Google Antigravity : https://www.youtube.com/@googleantigravity