Vi migrerade bort från Enzyme på två veckor. Det borde ha tagit fem år.

Asana-teknikteamEngineering Team
7 augusti 2026
3 min. läsning
facebookx-twitterlinkedin
Asana teknik i fokus

Vi använde nyligen AI för att slutföra flera års teknikarbete under ungefär en sprint. Så här gjorde vi och varför det har förändrat vårt sätt att tänka kring vad som är möjligt.

Femårsproblemet

År 2022 bestämde vi oss för att migrera Asanas frontend-testsvit från Enzyme, vårt åldrande testbibliotek, till React Testing Library (RTL). Enzyme hade förlorat community-stöd, fungerade inte bra med nyare versioner av React och uppmuntrade till tester som var tätt kopplade till implementeringsdetaljer snarare än till vad användarna faktiskt ser och gör. RTL drev oss mot en bättre modell: testa beteende, inte interna komponenter.

Migreringen gjorde stadiga framsteg under flera år. Flera projekt med flera ingenjörer och som varade i flera år bemannades för att arbeta med den. Produktteam tog itu med de delar som de ansvarade för. Allt det arbetet var viktigt. Men i den takten vi höll hade vi fortfarande ungefär fem år kvar tills vi var klara.

Så vi satte upp ett avsiktligt orimligt mål: tänk om vi slutförde hela migreringen på en vecka.

Vi kom nära. Det tog ungefär en och en halv veckas teknisk tid. Enzyme är nu helt borta från kodbasen.

Så här gick det egentligen till

Tillvägagångssättet var nästan pinsamt enkelt. Vi använde OpenAIs Codex med Frontier-modeller med extra högt resonemang och körde upp till fyra agenter i taget, var och en riktad mot en annan katalog. Vi hindrade maskinen från att gå i viloläge, lät agenterna köras under dagen och natten och kollade varje morgon och kväll för granskning av framsteg och öppna pull-begäranden.

Här är hela uppmaningen:

/goal Vi vill migrera lagringsplatsen från Enzyme-tester till tester i React Testing Library-stil. Följ befintliga normer och bästa praxis i kodbasen. Migrera alla filer i/directory som använder Enzyme till att använda React Testing Library. Testa dina ändringar med [test command]. Generellt sett bör filer som är lätta att konvertera migreras först.

Fem meningar. Det var allt.

Vi provade också mer avancerade inställningar: att dela upp arbetet i spårade ärenden, att låta agenten föra en löpande anteckningsfil, att be den skapa underagenter för att parallellisera ytterligare, att skriva en mycket mer detaljerad prompt om RTL-konventioner. Nästan allt gjorde saker och ting värre. Enkelheten vann.

Varför en uppmaning på fem meningar var tillräcklig

Det här är den viktigaste delen, och det är samma idé som OpenAI nyligen skrev om i Harness engineering: kvaliteten på en agents resultat beror i hög grad på kvaliteten på miljön du ger den.

Vår kodbas hade redan åratal av god smak inbakad – det ursprungliga beslutet att anta RTL, väl utformade testhjälpare, tydliga konventioner, verkliga exempel att utgå från. Modellen behövde inte att vi förklarade något av det; det fanns redan där att läsa. Vi angav bara målet och lät agenten köra.

Själva uppgiften hade också rätt form för att detta skulle fungera: en tydlig, verifierbar definition av färdigt (inget mer Enzyme) och snabba återkopplingsslingor – typkontroll, linting, tester, CI – som omedelbart kunde upptäcka misstag. Bra sele, väldefinierat problem, minimalt behov av handledning.

Vad som stod i vägen

Det mesta av friktionen var inte modellens fel – det var vårt:

  • Vissa nyligen skrivna interna dokument och agentvägledningar pekade fortfarande på Enzyme som det föredragna mönstret och styrde aktivt agenten i fel riktning. Föråldrad dokumentation är inte bara en mindre irritation längre. Det är vilseledande utbildningsmaterial för varje agent som läser det.

  • Långsamma, opålitliga verktyg (ett lint-steg som ibland tog mer än tio minuter, felmatchningar mellan CI och lokala kontroller) var där vi upptäckte att vi behövde ingripa mest. Representanten var sällan flaskhalsen – det var vår egen infrastruktur.

Harnessen är produkten nu

En av de tydligare lärdomarna från det här projektet: AI tar inte bort behovet av teknisk smak, den förstärker det. Rena exempel och tydliga konventioner i kodbasen gav rena, välformade resultat. Besvärliga mönster kopierades också. Detsamma gällde för våra dokument – föråldrad vägledning blev en belastning på ett sätt som den aldrig riktigt var när bara människor läste den.

Den uppmuntrande baksidan är att detta också fungerar i motsatt riktning. Bra exempel sprids. Tydliga dokument styr agenterna korrekt. Att investera i ”selen” – dokumenten, konventionerna och feedbackslingorna som omger koden – lönar sig för varje framtida migrering, inte bara den här.

Vad händer nu

Vi är optimistiska om vad detta innebär för Asana, och vi vet att det också kan kännas oroväckande – en stor del av ingenjörernas identitet är knuten till att skriva kod för hand. Min förhoppning är att det ger oss frihet att bry oss mer om hantverket, inte mindre, och att vara mer ambitiösa när det gäller backloggen av långvariga migreringar, omskrivningar och prestandaproblem som vi i tysthet har antagit alltid kommer att ta åratal.

Alla dessa problem kommer inte att minska från år till en vecka. Men vissa kommer att göra det. Frågan som är värd att ställa är inte bara ”använder vi AI här?” Det är ”har vi faktiskt försökt att rikta en agent mot det här under en helg och tittat på vad som kom tillbaka på måndag?”


Några extra detaljer, för de nyfikna:

  • Hela migreringen tog ungefär en och en halv veckas teknisk tid, fördelat på två kalenderveckor.

  • Modellanvändningen kostade ungefär 11 000 USD, plus ytterligare 1 000 USD i infrastruktur

  • För att sätta de 12 000 USD i perspektiv (en snabb beräkning): arbetet gav i slutändan fördelar utöver själva den ursprungliga ramverksmigreringen. På vägen förbättrade vi också testtäckningen, åtgärdade dåliga tester och rensade upp i den äldre testinfrastrukturen. Vi uppskattar att en manuell slutföring av hela omfattningen skulle ha inneburit en fullt utbyggd teknisk insats på ungefär 6 miljoner USD.

  • Vi fick några oväntade framgångar på vägen, bland annat städade vi upp ett ännu äldre testramverk från tiden före Enzyme som vi hade glömt att fortfarande fanns i delar av kodbasen.

Det här inlägget är en del av ett pågående samarbete och partnerskap mellan Asana och OpenAI som utforskar hur Codex kan ta sig an större och mer ambitiöst ingenjörsarbete.