import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Codeforces2
{
    public static void main(String[] args) throws IOException {
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        int t=Integer.parseInt(br.readLine());
        int xdir[]={0,1,0,-1};
        int ydir[]={1,0,-1,0};
        outer: while(t-->0)
        {
            String nm[]=br.readLine().split(" ");
            int n=Integer.parseInt(nm[0]);
            int m=Integer.parseInt(nm[1]);
            String arr[][]=new String[n][m];
            for(int i=0;i<n;i++)
            {
                int j=0;
                String str=br.readLine();
                for(int k=0;k<str.length();k++)
                {
                    arr[i][k]=String.valueOf(str.charAt(k));
                }
            }
            int flag=0;
            for(int i=0;i<n;i++)
            {
                for(int j=0;j<m;j++)
                {
                    if(arr[i][j].equals("G"))
                    {
                        flag=1;
                        break;
                    }
                }
            }
            if(flag==0)
            {
                System.out.println("YES");
                continue outer;
            }
            for(int i=0;i<n;i++)
            {
                for(int j=0;j<m;j++)
                {
                    if(arr[i][j].equals("B"))
                    {
                        for(int k=0;k<xdir.length;k++)
                        {
                            if(i+xdir[k]<0 || j+ydir[k]<0 || i+xdir[k]>=arr.length || j+ydir[k]>=arr[0].length)
                                continue ;
                            if(arr[i+xdir[k]][j+ydir[k]].equals("G") || (i+xdir[k]==n-1 && j+ydir[k]==m-1))
                            {
                                System.out.println("NO");
                                continue outer;
                            }
                            else
                                arr[i+xdir[k]][j+ydir[k]]="#";
                        }
                    }
                }
            }
            for(int i=0;i<n;i++)
            {
                for(int j=0;j<m;j++)
                {
                    if(arr[i][j].equals("G"))
                    {
                        flag=1;
                        int vis[][]=new int[n][m];
                        if(!dfs(arr,i,j,vis))
                        {
                            System.out.println("No");
                            continue outer;
                        }
                    }
                }
            }
//            if(flag==0)
//            {
//                System.out.println("Yes");
//                continue outer;
//            }

            System.out.println("YES");
        }
    }
    private static boolean dfs(String[][] arr,  int i, int j, int[][] vis) {
        if(i<0 || j<0 || i>=arr.length || j>=arr[0].length || vis[i][j]==1 || arr[i][j].equals("#") || arr[i][j].equals("B"))
            return false;
        if(i==arr.length-1 && j==arr[0].length-1)
            return true;
        vis[i][j]=1;
        boolean val= dfs(arr,i,j+1,vis) || dfs(arr,i,j-1,vis) || dfs(arr,i+1,j,vis) || dfs(arr,i-1,j,vis);
        vis[i][j]=0;
        return val;
    }
}