import java.util.*;
import java.lang.*;
import java.io.*;

/* Name of the class has to be "Main" only if the class is public. */
public class q4
{
	public static void main (String[] args) throws java.lang.Exception
	{
        // your code goes here
        Scanner sc = new Scanner(System.in);
        int t= Integer.parseInt(sc.next());
        while(t-->0)
        {
            int n= Integer.parseInt(sc.next());
            int m = Integer.parseInt(sc.next());
            String[] ab = new String[n];
            for(int i=0;i<n;i++)
            {
                ab[i]=sc.next();
            }
            char[][] arr = new char[n][m];
            for(int i=0;i<n;i++)
            {
                for(int j=0;j<m;j++)
                {
                    arr[i][j]=ab[i].charAt(j);
                }
            }
            /*for(int i=0;i<n;i++)
            {
                for(int j=0;j<m;j++)
                {
                    System.out.print(arr[i][j]+" "); 
                }
                System.out.println("");
            }
            */
            int flag=0;
            for(int i=0;i<n;i++)
            {
                for(int j=0;j<m-1;j++)
                {
                    if((arr[i][j]=='G' && arr[i][j+1]=='B')|| (arr[i][j]=='B' && arr[i][j+1]=='G'))
                    {
                        System.out.println("No");
                        flag=1;
                        break;
                    }
                }
                if(flag==1)
                {
                    break;
                }
            }
            if(flag==1)
            {
                continue;
            }
            Queue<el> q= new LinkedList<>();
            for(int i=0;i<n;i++)
            {
                for(int j=0;j<m;j++)
                {
                    if(arr[i][j]=='B')
                    {
                        q.add(new el(i,j));
                    }
                }
            }
            while(!q.isEmpty())
            {
                el a = q.poll();
                int x=a.x;
                int y=a.y;
                if(isValid(x+1,y,m,n) && isEmpty(x+1,y,arr))
                {
                    arr[x+1][y]='#';
                }
                if(isValid(x-1,y,m,n) && isEmpty(x-1,y,arr))
                {
                    arr[x-1][y]='#';
                }
                if(isValid(x,y+1,m,n) && isEmpty(x,y+1,arr))
                {
                    arr[x][y+1]='#';
                }
                if(isValid(x,y-1,m,n) && isEmpty(x,y-1,arr))
                {
                    arr[x][y-1]='#';
                }


            }
            /*if(arr[n-1][m-1]=='#')
            {
                System.out.println("No");
                continue;
            }
            */
            Queue<el> qe= new LinkedList<>();
            boolean[][] visited= new boolean[n][m];
            if(arr[n-1][m-1]=='.')
            {
                visited[n-1][m-1]=true;
                qe.add(new el(n-1,m-1));
            }
            int[] ab1={-1,0,1,0};
            int[] b={0,-1,0,1};
            while(!qe.isEmpty())
            {
                el a = qe.poll();
                int x= a.x;int y= a.y;
                for(int i=0;i<4;i++)
                {
                    if(isValid(x+ab1[i],y+b[i],m,n)&& arr[x+ab1[i]][y+b[i]] !='#'&& visited[x+ab1[i]][y+b[i]]==false)
                    {
                        visited[x+ab1[i]][y+b[i]]=true;
                        qe.add(new el(x+ab1[i],y+b[i]));
                    }
                }

            }
            int f=0;
           for(int i=0;i<n;i++)
           {
                for(int j=0;j<m;j++)
                {
                    if((arr[i][j]=='B' && visited[i][j]==true)||(arr[i][j]=='G' && visited[i][j]==false)){
                        f=1;
                        break;
                    }
                }
           }
           if(f==1)
           {
               System.out.println("No");
           }
           else
           {
               System.out.println("Yes");
           }



        }
    }
    public static boolean isValid(int x,int y,int m,int n)
    {
        if(x<n && x>=0 && y<m && y>=0 )
        {
            return true;
        }
        return false;
    }
    public static boolean isEmpty(int x,int y,char[][] arr)
    {
        if(arr[x][y]=='.')
        {
            return true;
        }
        return false;
    }
    public static boolean path(int x, int y,char[][] arr,int n,int m)
    {
        if(!isValid(x,y,m,n))
        {
            return false;
        }
        if(arr[x][y]=='#')
        {
            return false;
        }
        if(x==n-1 && y==m-1 )
        {
            return true;
        }
        return(path(x+1,y,arr,n,m)||path(x,y+1,arr,n,m)||path(x-1,y,arr,n,m)||path(x,y-1,arr,n,m));
    }
}
class el
{
    int x;int y;
    public el(int x,int y)
    {
        this.x=x;
        this.y=y;
    }
}